0

在我的代码中调用函数时,我不小心复制了函数头,由于某种原因,代码仍然有效。为什么是这样?

$data = Utilities::multi_curl($substance_year_combo_groups, $files = false, $download_folder = null, $file_name = null, $pop = false, $handle_key = 'results');

显然,它应该这样写:

$data = Utilities::multi_curl($substance_year_combo_groups, false, null, null, false, 'results');

但我可以在调试中看到最后一个参数确实是'results'. 纯变量赋值不应该被评估为true

$handle_key默认情况下null在函数头中。

4

3 回答 3

1

参数被评估,并且这些评估的结果被传入。

请记住,在 PHP 中赋值有一个“返回值”,即被赋值的值。

$foo = 'bar';
echo $foo;
$result = some_function($foo = 'blah');
echo $foo;

此代码将 echo outbarblah并作为参数blah传入。some_function

这是完全相同的机制,它允许:

$a = $b = $c = $d = 42;

工作,并分配42给所有四个变量。

于 2014-07-23T15:09:47.197 回答
1

赋值操作的结果就是被赋值的值。例如,我可以这样做:

if($result = do_something_that_may_fail()) {}

无论do_something_that_may_fail()方法返回什么都将被分配给$result,如果任何不评估为假的东西,该if块将被执行。这样做的一个副产品是您仍然可以在块$result内部引用。if

在您的方法调用中也发生了同样的事情,正在分配值并将值本身发送到方法。

于 2014-07-23T15:09:56.823 回答
1

已经回答,但要包含PHP 的参考:Assignment Operators Manual

赋值表达式的值就是赋值的值。即“$a = 3”的值为3。

于 2014-07-23T15:15:45.990 回答