Php 函数调用中的变量赋值

Php 函数调用中的变量赋值,php,variable-assignment,Php,Variable Assignment,我继承了一个php代码库,其中包含函数调用中的一些变量赋值: <?php function some_func($foo, $state) { .... } some_func("random stuff", $state = true); ... some_func("other stuff", $state = false); ... ?> 我做了一些研究和测试,但我无法找出PHP中为这段代码定义的行为 如何计算some_func()的第二个参数的值?4state变量

我继承了一个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)?或者是赋值的结果(即将
true
/
false
赋值给变量
$state
成功,因此
一些函数收到
true


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

要在函数调用时赋值,必须(
&$var
):

输出1(真)

输出0(假)

如何计算某个_func()的第二个参数的值

它不是“计算的”,而是显式设置:
$state=true/false
,然后作为参数传递给
some_func()

全局范围内$state变量的值是多少


$state
在全局范围内不存在。

我也必须使用具有类似函数调用的代码库。幸运的是,我可以访问编写代码的开发人员。以下是我学到的

情景1:

这只是一种记录代码的方法。您知道要传递到函数中的变量名

情景2:

以下是一个链接: 如果你看到了,他们会特别指出你的情况:

foo($a = 5); // Expression, not variable
“伪”pass-by-ref。根据您的PHP版本,它可能会抛出一个警告。我得到了以下信息:
Strict Standards:在…

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

危险的是,您提供的示例不会显示“gotcha!”行为。在这种情况下,您在函数外回显的
$arg2
将始终是函数调用中的表达式将其设置为的内容。此外,正在调用的函数也将被发送“副本”我之所以说“复制”,是因为即使函数需要一个pass by ref,它实际上也得到了一个副本,类似于普通函数参数得到的副本


如果您修改函数内部的
$arg2
,则不会修改函数外部的
$arg2
,正如您对传递引用的函数所期望的那样。

这看起来不对。我知道如何通过引用传递内容,但这并不能解释发布的代码是如何工作的。我想用工作原理完全相同,但更容易理解的东西来替换它,但要做到这一点,我需要了解它的实际功能。参考页甚至解释了一个特定的示例:不应通过引用传递其他表达式,因为结果是未定义的。例如,以下通过引用传递的示例无效。因此这实际上是未定义的行为。由于该值未在函数外部使用,因此我将用
some_func(“random stuff”,true);
。谢谢:)您是对的,它不在函数外部,因此可以安全地按原样设置。祝你好运!
my_function(false, $arg2 = false);
echo $arg2;
foo($a = 5); // Expression, not variable