I'm confused by the reference of PHP. Please take a look at my stripped down example:
$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"}
Now, everything is ok. But I would like define a function to get the inner reference.
$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];
}
Why? And how to resolve it? In fact, $a is a nested tree data, so I need to define a function to get some data on some level and to modify it.