Connexion
Pour récupérer votre compte, veuillez saisir votre adresse email. Vous allez recevoir un email contenant une adresse pour récupérer votre compte.
Inscription
En vous inscrivant, vous acceptez les conditions d'utilisation du site et de nous vendre votre âme pour un euro symbolique. Amusez vous, mais pliez vous à la charte.

Un Rédacteur Factornews vous demande :

Forums

1
PHP : Variable variable tableau
Morty
Membre Factor
Membre 668 msgs
Hello !

Un problème relativement simple mais sans solution pour le moment :

J'ai un tableau $array[0][1][2][...][n] (bon il est pas aussi grand mais ça donne une idée). Je cherche à accéder au dernier élément sachant que je n'ai pas toujours la même profondeur.

J'ai essayé ceci :

$array = tableau compliqué;

$reftable = "array";
foreach ($parent_table as $parent)
{
$reftable .= "['" . $parent . "']";
}
echo($reftable . "<br />");
print_r({$reftable}); ou print_r($$reftable);

Quelqu'un aurait-il une idée ? Je pense avoir pris une voiture-bélier pour enfoncer un clou, mais dans ce cas, y a-t-il une solution plus propre ? Par exemple passer par référence les différents niveaux jusqu'à la fin...
 
Akshell
Pedobear à poil roux
Membre 4167 msgs
si c'est vraiment le dernier et pas le plus profond :

$array = array(
array(
array(
array(1112, 1114, 1116, 1118),
array(1122, 1124, 1126, 1128),
array(1132, 1134, 1136, 1138)
),
array(
array( 1212, 1214, 1216, 1218),
array(1222, 1224, 1226, 1228),
array(1232, 1234, 1236, 1238)
)
),
array(
array(
array(2112, 2114, 2116, 2118),
array(2122, 2124, 2126, 2128),
array(2132, 2134, 2136, 2138)
),
array(
array(2212, 2214, 2216, 2218),
array(2222, 2224, 2226, 2228),
array(2232, 2234, 2236, 2238)
)
)
);

$i_array = $array;
while (is_array($i_array))
$i_array = $i_array[count($i_array) - 1];
echo '{'.$i_array.'}';
 
Morty
Membre Factor
Membre 668 msgs
Nickel, c'est à peu près ça. Je connais le chemin complet pour aller jusque-là où je veux. Est-ce que cela fonctionnerait par référence ?
 
Akshell
Pedobear à poil roux
Membre 4167 msgs
$i_array = &$array;
while (is_array($i_array))
$i_array = &$i_array[count($i_array) - 1];
var_dump($array);
$array[1][1][2][3] = 'zizi panpan';
echo '{'.$i_array.'}';

maintenant oui.
 
Morty
Membre Factor
Membre 668 msgs
Merci beaucoup Akshell ! Je n'étais pas sûr que l'on déplaçait le curseur en repassant par référence, j'avais peur que l'on écrase le premier tableau par un de ses sous-niveaux...
 
Morty
Membre Factor
Membre 668 msgs
Pour ceux qui désirent la réponse :)

Avec ceci vous pourrez atteindre le fond d'un tableau dont vous connaissez l'arborescence ($parent_table) :

$i_array = &$this->bom;
foreach ($parent_table as $parent_line)
{
$i_array = &$i_array[$parent_line];
}
 
PHP : Variable variable tableau
1

Règles à suivre

Écrire dans un français correct et lisible : ni phonétique, ni style SMS. Le warez et les incitations au piratage sont interdits. La pornographie est interdite. Le racisme et les incitations au racisme sont interdits. L'agressivité envers d'autres membres, les menaces, le dénigrement systématique sont interdits. Éviter les messages inutiles

 
Rechercher sur Factornews