gpt4 book ai didi

PHP:为什么用括号括起来的函数调用会阻止 'pass by reference' 通知?

转载 作者:可可西里 更新时间:2023-11-01 12:38:11 25 4
gpt4 key购买 nike

<分区>

我已经四处搜索过这个,但只找到了类似“这是一个有用的技巧”的东西,但从来没有找到任何解释。

在下面的代码中:

error_reporting(-1);
ini_set("display_errors", 1);
end(array_flip($_GET));
end((array_flip($_GET)));

第一次调用 end() 会产生一个通知:

Strict Standards: Only variables should be passed by reference in /home/john/www/test/dp.php on line 3

下一个,array_flip($_GET) 包含在 () 中,不会产生任何投诉。

我了解通知的原因,什么是严格标准,“按引用传递”是什么意思,并且 end() 接受对数组的引用作为其参数。 (它必须,因为它会影响原件。)我担心的是它的原因。周围的 () 是否创建了一个临时变量,或者这只是以某种方式欺骗了 PHP 解析器?如果它确实创建了一个临时变量(并且按设计这样做),那么这应该是安全的使用,但如果它是一个hack欺骗解析器然后它可能会在未来版本的 PHP 中崩溃。 (我刚好在 PHP 版本 5.4.36-0+deb7u1)

请注意,我不确定我是否喜欢这种结构,即使它是安全的(很容易看不到它,其他人可能不知道它为什么在那里),但它通常方便且易于阅读函数可以像这样串在一起。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com