0
PHPのリファレンスで混乱します。私の解体した例を見てください: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"}
今、すべては問題ありません。しかし、内部参照を取得する関数を定義したいと思います。
$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];
}
なぜですか?そしてそれを解決する方法は?実際、$ aはネストされたツリーデータなので、あるレベルのデータを取得して変更する関数を定義する必要があります。
通話機能を参照することにより、以下の私の答え.. – Dru