Je suis confus par la référence de PHP. S'il vous plaît jeter un oeil à mon exemple dépouillé:Impossible de modifier les données source à travers la référence renvoyée par la fonction sur PHP
$a = array("level1"=>array("level2"=>"level3"));//a nested array
$b = &$a["level1"];//get the inner reference
$b["key"] = "test";//modify some data
echo json_encode($a)."<br>";//output {"level1":{"level2":"level3","key":"test"}}
echo json_encode($b)."<br>";//output {"level2":"level3","key":"test"}
Maintenant, tout est ok. Mais je voudrais définir une fonction pour obtenir la référence interne.
$a = array("level1"=>array("level2"=>"level3"));//a nested array
//$b = &$a["level1"];//get the inner reference
$b = getInnerRefer($a, "level1");
$b["key"] = "test";//modify some data
echo json_encode($a)."<br>";//output {"level1":{"level2":"level3"}}
echo json_encode($b)."<br>";//output {"level2":"level3","key":"test"}
function getInnerRefer(&$father, $key){
return $father[$key];
}
Pourquoi? Et comment le résoudre? En fait, $ a est une arborescence imbriquée, j'ai donc besoin de définir une fonction pour obtenir des données à un certain niveau et les modifier.
appeler une fonction par référence, ont mis à jour ma réponse ci-dessous .. – Dru