Warning: Undefined array key "HTTPS" in include() (line 29 of /opt/www/fdv2/drupal.stage/web/sites/default/settings.local.php).
include('/opt/www/fdv2/drupal.stage/web/sites/default/settings.local.php') (Line: 4)
require('/opt/www/fdv2/drupal.stage/web/sites/drupal001.net/settings.php') (Line: 145)
Drupal\Core\Site\Settings::initialize('/opt/www/fdv2/drupal.stage/web', 'sites/drupal001.net', Object) (Line: 1099)
Drupal\Core\DrupalKernel->initializeSettings(Object) (Line: 701)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
&drupal_array_get_nested_value的问题?????? - Drupal大学 - Drupal问答论坛
首页 / 帖子
&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个答案