gpt4 book ai didi

php - PHP 中函数参数的求值顺序

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:00:29 25 4
gpt4 key购买 nike

是否保证 PHP 函数参数的求值顺序始终相同?

谢谢。

最佳答案

通常,是的。作为the manual states :

[Function] arguments are evaluated from left to right.

但是有两种极端情况,参数根本不被评估:

未定义函数

$calls = 0;
register_shutdown_function(function () use (&$calls) {
echo $calls;
});
func_does_not_exist($calls++);

outputs 0 适用于所有 PHP 版本。

缺少构造函数,未定义函数的特例

class Foo {}

$bar = 0;
$foo = new Foo($bar++);
echo $bar;

outputs 0 在 PHP < 7.1 上,1 在 PHP >= 7.1 上。它被称为“Rasmus 优化”,它只发生在构造没有正式构造函数的类的情况下。另见 #67829 , #54162#54170 .


总之,手册是正确的。对于定义的函数,参数从左到右计算,然后传递给函数。未定义的函数(不存在的构造函数是一种特殊情况)不符合函数的条件,因此调用前的求值本身是未定义的。

关于php - PHP 中函数参数的求值顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39273317/

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