Trouver le noeud parent dans un tableau mutlidimentionnel

Signaler
Messages postés
25
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
3 janvier 2012
-
Messages postés
25
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
3 janvier 2012
-
Hello :)

Je me trouve devant un problème assez bête, mais que j'ai du mal à résoudre...
J'ai un tableau multidimentionnel, du style :

<?php

$arr = array(
'arr1'=> array(
'val1',
'val2'
),
'arr2'=> array(
'val3',
'val4'
)
)

?>

Ce que je voudrais, c'est que lorsque ma valeur courante est par exemple val2, j'aimerai connaitre quel est le "nœud" parent (ici arr1).
Une piste que j'ai trouvée serait d'utiliser prev, via une boucle, jusqu'à trouver un array. Mais ca me semble un peu lourd...

Des idées ?

Merci !!!

3 réponses

Messages postés
25
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
3 janvier 2012

Voici une 1ere utilisation qui fonctionne :

$trouver = 0;
foreach( $Menu as $Key => $Value ) {

foreach( $Menu[$Key] as $Key2 => $Value2 ) {

if( !$trouver && $Key2 == 'what-is-the-grid' ) {
$trouver=1;

prev($Menu);

print_r (current($Menu));

$parent = (key($Menu));

break;
}

}

if( $trouver ) 
break;

}


C'est pas très optimisé, et ca ne gère qu'un niveau (j'en ai jusqu'à deux), mais c'est mieux que rien...

Si vous avez un conseil, n'hésitez pas !
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
16
bonsoir

du manuel
http://www.php.net/manual/en/function.prev.php
peu etre ça en obligeant l'arret apres une iteration

<?php

end($ar);

while ( !is_null($key = key($ar)) ) {
$val = current($ar);
echo "{$key} => {$val}\n";
prev($ar);
}

?>

Bonne programmation !
Messages postés
25
Date d'inscription
mardi 14 juin 2005
Statut
Membre
Dernière intervention
3 janvier 2012

Hello !

Merci pour ton exemple. Effectivement, c'est une manière intéressante de parcourir le tableau...

J'ai trouvé une solution qui fonctionne, reste maintenant à l'optimiser. Car en fonction du nombre de niveaux, ca peut vite demander des ressources !

++ ;)