首页 / 帖子
&drupal_array_get_nested_value的问题??????
$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;}

请问为什么,在第一个例子中,引用者改变能改变被引用者的值,但第二个例子里,却是,引用者改变了,但被引用者没有被改变?请问,这个是为什么嗯?

0个答案