存储数组将句柄添加到变量

时间:2018-05-24 12:13:21

标签: php

嘿,在最近的一个项目中,我得到了这个工作,并且非常惊讶于这样的剪辑工作。

$parentRef = &$elements[$targetPath]-> 
    {$contentTypeMap[$contentTypeIdMap[$contentTypeId]]};

if(is_array($parentRef)) {
    $parentRef = &$parentRef[];
}

$parentRef = $element;

它非常直观,它可能会以这种方式工作,但究竟是 $parentRef[]返回来使其工作?

如果我var_dump,我会null

这是一个似乎有效的简化示例。

<?php

$arr = [1, 2];

$ref = &$arr[];

$ref = 3;

foreach($arr as $n) {
    echo $n;
}

此示例返回123只是为了验证它是否有效。

1 个答案:

答案 0 :(得分:1)

在您的示例中,$ arr []将在数组中创建具有NULL值的新元素。 &符号是对这个位置的引用,所以当你将某些内容存储到$ ref时,它将被存储在这个新位置,因为$ ref只是引用(类似于指针,但它不是指针!)到数组中的这个新元素< / p>