[RESOLU] Accéder à l'index $string d'un tableau sans connaitre le $string

Eléphanteau du PHP | 23 Messages

04 mai 2016, 18:22

Hello,

Bon, comme d'habitude, j’essaie d'écrire le meilleur sujet possible, mais je ne suis pas certain d'être "dans le vrai".

Voila, j'ai un soucis... avec le fait d'accéder à l'index d'un tableau, ce dernier étant un string, et je pense que "tout le soucis" vient de là.

Je tiens à préciser que j'ai réussi à trouver ce que je considère comme une solution de contournement. Donc mon code fonctionne, mais je trouve cela ni beau, ni optimal...

Mon code étant plutôt long, je vais tenter de reproduire mon soucis en mode 'exemple' :
$tableau_1 = array(
'COMPATIBLE_A' => array('A', 'B', 'C', 'D', 'E', 'F'),
'COMPATIBLE_B' => array('G', 'H', 'I', 'J', 'K', 'L'),
'COMPATIBLE_C' => array('M', 'N', 'O', 'P', 'Q', 'R')
);
Bon, en temps normal, pas de soucis, je fais un $tableau_1['COMPATIBLE_A'], et je tape sur la bonne ligne.

Mais, comment puis-je faire pour accéder à la même ligne, si je ne connais pas à l'avance 'COMPATIBLE_A' ?

Je pensais (bêtement il semblerait), qu'un $tableau_1[0] me donnerait 'COMPATIBLE_A'... Mais non, j'ai le droit à une erreur d'index.

J'ai eu besoin de faire cela pour mélanger deux tableaux. Ma solution, que je n'apprécie pas, faire un autre tableau (donc un troisième) contenant juste le titre des index de l'autre tableau :
$tableau_index = array('COMPATIBLE_A','COMPATIBLE_B','COMPATIBLE_C');
Et forcément, un $tableau_index[0] me retourne bien 'COMPATIBLE_A', et ça j'ai bien compris pourquoi (http://php.net/manual/fr/language.types.array.php : Exemple #4 Tableaux indexés sans clé).

Merci par avance :D

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

04 mai 2016, 20:51

Bonjour,

Il faut effectivement distinguer les tableaux indexés (0, 1, 2 ...) et les tableaux associatifs pour lesquels tes indexes peuvent être des strings ou des nombres qui ne se suivent pas :)

Pour éviter de faire un second tableau, tu peux utiliser la fonction array_keys() qui te listera l'ensemble des indexes de ton tableau. Tu peux aussi utiliser un foreach pour parcourir le tableau sans avoir besoin de connaitre les clés de celui-ci.
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 23 Messages

05 mai 2016, 08:45

Merci Ryle.