1) types structurés 2) insertion en fin de tableau

Eléphant du PHP | 197 Messages

29 mai 2006, 21:36

Salut j'ai 2 problemes.

Je souhaite utiliser des types structurés pour insérer en fin de tableau. Existe t'il un équivalent du "typedef struct"... du langage C ?

Est-ce qu'il existe une fonction pour faire une insertion en fin de tableau (pour insérer le type :twisted:). J'ai trouvé qu'une fonction pour insérer la même valeur sur une longueur (je me rappelle plus de son nom :?)

En gros : $montab ==> [<$i,$g>,<$i,$g>,<$i,$g>...]


Merci d'avance

Mammouth du PHP | 19672 Messages

29 mai 2006, 21:51

Je peux me tromper, mais ce que tu cherche ressemble à un montage de tableau multi-dimensionnel. Comme je ne suis pas certain, j'aimerais que tu essayes de préciser avec un exemple... à moins qu'un spécialiste en C ne sache très bien à quoi correspond en PHP ce que tu cherches, le C n'est pas précisément ma spécialité... :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 197 Messages

29 mai 2006, 21:56

je peux le faire en tableau multidimensionel... mais si j'ai posté c'est pour éviter cette façon assez chiante à coder :?


sinon j'ai pensé faire mon tableau comme ça [$i,$g,$i,$g...] mais je trouve ça un peu sale :s

Mammouth du PHP | 19672 Messages

29 mai 2006, 22:06

Je viens d'effectuer une petite recherche: le type structuré n'existe pas en PHP d'après ce que j'ai pu trouver et personnellement, je n'en ai jamais entendu parler. Donc, si ma première impression est la bonne, je crains que tu n'aie pas le choix de passer par les tableaux multi-dimensionels :?

Maintenant, comme je ne connais pas le C et que je ne saisis pas bien de quoi il s'agit, ce n'est peut-être pas a solution appropriée :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 197 Messages

29 mai 2006, 22:13

merci Cyrano pour tes recherches... je vais me débrouiller autrement.

Sinon pour l'insertion en fin de tableau, tu as une solution simple ?

Mammouth du PHP | 19672 Messages

29 mai 2006, 22:16

Ben faudrait que j'aie une idée avec un exemple un peu parlant : j'utilise les tableaux au quotidien et je n'ai pas trop de problèmes avec ça, donc j'aurai sûrement une idée, mais il me faut un point de départ voire un bout de code s'il y a.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 197 Messages

29 mai 2006, 22:20

function insert_fin($tab,$val) { // $tab tableau indexé automatiquement et $val entier
exit;
}

voilà mon code lol...

sinon j'aimerais faire un truc du genre (je prend l'exemple d'une chaine)
$tab = 'ceci';
$tab .= 'est fini';

bref ajouter à la suite .=

Mammouth du PHP | 19672 Messages

29 mai 2006, 22:34

BOn, si on parle de tableau indexé, on commence par déclarer la variable en tableau. PHP est très faiblement typé mais les tableaux doivent être déclarés contrairement aux variables scalaires : donc:
$tab = array();
Ensuite, tu rajoutes des éléments les uns après les autres. Pas besoin de définir d'avance un nombre d'éléments, les tableaux en PHP sont dynamiques :
$tab = array();
$tab[] = $val1;
$tab[] = $val2;
//... etc...
Si tu veux éventuellement ajouter un élément te permettant de savoir le nombre d'éléments ajoutés, utilise count() :
$nb_val = count($tab);
À partir de là, rien n'interdit d'ajouter un éléments pour insérer le nombre obtenu quoique l'intérêt de la manoeuvre reste douteux.

Il y a une autre syntaxe possible pour ajouter des éléments dans un tableau indexé, personnellement, je la trouve plus lourde et je ne l'utilise pas, mais il n'est pas inutile de la connaître :
array_push($val1, $tab);
array_push($val2, $tab);
//... etc ...
Pour ajouter une dimension, c'est également possible :
$tab = array();
$tab[$val1] = array();
$tab[$val1][] = $sous_val1;
$tab[$val1][] = $sous_val2;
//...
Bouts de code pratiques pour afficher en débuggage :
<pre>
<?php
var_dump($tab);
?>
</pre>
Pour la récupération, un comptage et une boucle :
$nb_val = count($tab);
for($i = 0; $i < $nb_val; $i++)
{
    echo("<p>". $tab[$i] ."</p>\n");
}
Voilà, j'espère que ça répond au moins partiellement à ta recherche, si tu as d'autres question, ben sens-toi à l'aise pour les poser :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 197 Messages

29 mai 2006, 22:36

oula j'en demandais pas autant :P !!! Mais je te remercie bien :D

Je pense pouvoir me débrouiller avec tout ça

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 mai 2006, 09:34

Pourquoi ne pas faire une classe pour remplacer ta structure ?

Eléphant du PHP | 197 Messages

30 mai 2006, 09:35

non la programmation objet ça me donne des boutons :D

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

30 mai 2006, 09:43

non la programmation objet ça me donne des boutons :D
Plus que de gérer des tableaux multidimensionnels avec des boucles et des insertions à la fin ? :lol:

Tu devrais regarder quand même, si c'est juste pour remplacer un type structuré ça te fera une toute petite classe, avec getter() et setter() pour chaque attribut, et rien de plus.

L'objet en PHP c'est déjà plus léger que dans d'autres langages, d'autant plus si tu n'utilises pas tout

On peut voir la structure que tu voudrais avoir ?

Eléphant du PHP | 197 Messages

30 mai 2006, 10:04

en fait je suis en train d'améliorer un qcm en ligne pour une agence d'interim. La base de donnée est recursive. Je souhaiterais garder en memoire tout ce qui est stocké comme réponses avant d'inscrire dans la base de donnée. J'ai opté pour solution de stocker dans un tableau (envoie par POST) et d'inscrire en base de donnée à la fin du QCM (avec parcours du tableau...).

J'ai toujours peur qu'en plein milieu du QCM, le gars s'amuse à faire précédent et tout...