微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 函数调用中的变量赋值

我继承了一个PHP代码库,它包含函数调用中的一些变量赋值:
<?PHP
function some_func($foo,$state) {
  ....
}

some_func("random stuff",$state = true);
...
some_func("other stuff",$state = false);
...
?>

我做了一些研究和一些测试,但我不知道这个代码PHP中的定义行为是什么.

some_func()的第二个参数的值是如何计算的? 4state变量的内容(第一次调用时为true,第二次为false)?或者它是赋值的结果(即为变量$state分配true / false是否成功,所以some_func收到了真的?

全局范围内$state变量的值是多少?赋值的结果,即第一次调用后为true,第二次调用后为false?

我也不得不使用具有与此类似的函数调用代码库.幸运的是,我可以访问编写代码的开发人员.这是我学到的.

场景1:

只是一种记录代码方法.您知道要传递给函数的变量名称.

场景2:

这是一个链接http://www.php.net/manual/en/language.references.pass.php
如果你看到,他们会专门提出你的情况:

foo($a = 5); // Expression,not variable

一个’虚拟’pass-by-ref.根据您的PHP版本,它可能会发出警告.我得到了这个:严格的标准:只有变量应该通过引用传递给…

现在让我详细介绍这种情况下发生的情况.

危险的是你提供的例子不会显示“陷阱!”行为.在这种情况下,您在函数外部回显的$arg2将始终是函数调用中的表达式设置它.此外,被调用函数也将被发送该值的“副本”,并使用它.我说“复制”是因为即使该函数需要pass-by-ref,它实际上也会获得一个副本,类似于普通函数参数.

如果修改函数内部的$arg2,它将不会修改函数外部的$arg2,正如您所期望的那样,是一个pass-by-ref函数.

原文地址:https://www.jb51.cc/php/134304.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐