提问人:A. Andersen 提问时间:4/1/2022 更新时间:4/1/2022 访问量:188
PHP end() 和 Pass by Reference [duplicate]
PHP end() and Pass by Reference [duplicate]
问:
我试图将一个 explode 语句传递到 end() 中,并从我的 IDE 中收到了以下通知,“只有变量可以通过引用传递”,这并不奇怪。
然而,让我感到困惑的是,如果我做这样的事情
$array = ['cat', 'dog', 'bird'];
end($array);
echo print_r($array, true);
['cat', 'dog', 'bird'] 打印出来。
我的理解是,通过引用传递某些东西会改变变量的值,所以我原本希望$array在传递到 end() 后只打印出“Bird”。
我怀疑我对通过引用传递某些东西有一个根本的误解......
答:
1赞
Milad Elyasi
4/1/2022
#1
end() 函数将内部指针移动到数组中的最后一个元素并输出。此数组通过引用传递,因为它由函数修改。这意味着您必须向它传递一个实变量,而不是返回数组的函数,因为只有实际变量才能通过引用传递。
end()
函数返回一个值,并且不会更改引用数组!
因此,您可以先将该值保存到另一个变量中。实际上,它返回最后一个元素的值,或者返回空数组的 false。
因此,您可以尝试:
$array = ['cat', 'dog', 'bird'];
$last = end($array);
echo print_r($last, true);
评论
end()