PHP end() 和 Pass by Reference [duplicate]

PHP end() and Pass by Reference [duplicate]

提问人:A. Andersen 提问时间:4/1/2022 更新时间:4/1/2022 访问量:188

问:

我试图将一个 explode 语句传递到 end() 中,并从我的 IDE 中收到了以下通知,“只有变量可以通过引用传递”,这并不奇怪。

然而,让我感到困惑的是,如果我做这样的事情

$array = ['cat', 'dog', 'bird'];
end($array);
echo print_r($array, true);

['cat', 'dog', 'bird'] 打印出来。

我的理解是,通过引用传递某些东西会改变变量的值,所以我原本希望$array在传递到 end() 后只打印出“Bird”。

我怀疑我对通过引用传递某些东西有一个根本的误解......

PHP 数组 按引用传递

评论

0赞 Sammitch 4/1/2022
通过引用传递某些内容时,函数可能会修改您传递的内容。在这种情况下,修改数组的内部指针,该指针对已发布的代码没有影响,因为它对内容没有影响,但可能会影响数组的后续遍历。end()

答:

1赞 Milad Elyasi 4/1/2022 #1

end() 函数将内部指针移动到数组中的最后一个元素并输出。此数组通过引用传递,因为它由函数修改。这意味着您必须向它传递一个实变量,而不是返回数组的函数,因为只有实际变量才能通过引用传递。

end()函数返回一个值,并且不会更改引用数组! 因此,您可以先将该值保存到另一个变量中。实际上,它返回最后一个元素的值,或者返回空数组的 false。 因此,您可以尝试:

$array = ['cat', 'dog', 'bird'];
$last = end($array);
echo print_r($last, true);