我在代码中调用函数时意外复制了函数头,并且由于某种原因代码仍然有效。这是为什么?
$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
为{{1}}。
答案 0 :(得分:1)
评估参数,并传递这些评估的结果。
请记住,在PHP分配中有一个"返回值",这是分配的值。
$foo = 'bar';
echo $foo;
$result = some_function($foo = 'blah');
echo $foo;
此代码将回显barblah
,并将blah
传递给some_function
作为参数。
这是允许的完全相同的机制:
$a = $b = $c = $d = 42;
开始工作,并将42
分配给所有四个变量。
答案 1 :(得分:1)
赋值操作的结果是赋值。例如,我可以这样做:
if($result = do_something_that_may_fail()) {}
无论do_something_that_may_fail()
方法返回什么,都会被分配给$result
,如果没有任何评估为false,则会执行if
块。副产品是您仍然可以在$result
块内引用if
。
在方法调用中发生同样的事情,正在分配值,并且值本身将被发送到方法。
答案 2 :(得分:1)
已经回答,但要包含PHP: Assignment Operators Manual
的引用赋值表达式的值是指定的值。也就是说,“$ a = 3”的值是3。