$abc = '789';
$efg = &$abc;
$efg = 'soso';
dpm($abc); //soso
dpm($efg); //soso
这个地方$efg的改变能改变$abc的值。
但是
$arr1 = array('a'=>array('b'=>'b'));
$arr2 = array('a','b');
dpm($arr1); //array('a'=>array('b'=>'b'));
$exist = &drupal_array_get_nested_value($arr1,$arr2,$key_exist);
dpm($exist);//b
dpm($arr1); //array('a'=>array('b'=>'b'));
dpm($key_exist);//true
这个地方有改变不了了,甚至在函数内部$array也没有改变
function &drupal_array_get_nested_value(array &$array, array $parents, &$key_exists = NULL) {
$ref = &$array;
foreach ($parents as $parent) {
if (is_array($ref) && array_key_exists($parent, $ref)) {
$ref = &$ref[$parent];
}
else {
$key_exists = FALSE;
$null = NULL;
return $null;
}
}
$key_exists = TRUE;
dpm($array); //same nto change //array('a'=>array('b'=>'b'));
dpm($ref); //same not change //b
return $ref;}
请问为什么,在第一个例子中,引用者改变能改变被引用者的值,但第二个例子里,却是,引用者改变了,但被引用者没有被改变?请问,这个是为什么嗯?