Php array() pour cibler un autre array()

Résolu
Gulvar -  
 Gulvar -
Bonjour,

J'ai besoin d'aide pour une application php:
J'ai un tableau array() multidimensionnel que nous appellerons "données".
"0"=>"25" 
"1"=>"45" 
"2"=>"0"=>27 
     "1"=>35 
"3"=>"53" 


J'ai un autre tableau (que nous appellerons "chemin") dont les valeurs forment un "chemin" à travers le tableau "données" ( ce tableau est généré dynamiquement depuis une fonction que je ne peux pas altérer).

"0"=>"2" 
"1"=>"1" 


Afin de savoir quel élément est visé dans le tableau "données" je dois utiliser le tableau "chemin":
dans l'exemple ci dessous je vise l'élément "35" qui dans l'élément key=1 qui est lui-même dans l'élément key=2.

en "statique" cela donnerait :

$donnees[$chemin[0]][$chemin[1]]="nouvelle donnée"


Je ne parviens pas à rédiger la syntaxe qui me permettra de faire ce travail dynamiquement (le tableau $chemin change régulièrement):
Ce qui suit est totalement faux et aberrant mais je le mets afin d'être clair dans ce que je voudrais faire:
/*CE CODE EST FAUX IL EST ICI A TITRE D'EXEMPLE DE CE QUE JE VOUDRAIS FAIRE*/ 

$cible=""; 

foreach($chemin as $pas){ 
 $cible.=[$pas]; 
} 

$donnees.cible="nouvelle donnée"; 



1 réponse

  1. le père
     
    Bonsoir,

    Si j'ai compris ton besoin...
    $donnees=array(25,45,array(27,35),53);
    $chemin=array(2,1);
    $chm='$donnees';
    for ($k=0; $k<count($chemin);$k++) $chm .="[$chemin[$k]]";
    
    echo eval ('return '.$chm.';'),'<br>';
    eval ( $chm."='nouvelle donnée';");
    echo eval ('return '.$chm.';');
    1
    1. Gulvar
       
      merci beaucoup!
      0