Php 非常规传递参数的奇怪行为
在代码中调用函数时,我意外地复制了函数头,出于某种原因,代码仍然有效。为什么会这样Php 非常规传递参数的奇怪行为,php,function,default-arguments,Php,Function,Default Arguments,在代码中调用函数时,我意外地复制了函数头,出于某种原因,代码仍然有效。为什么会这样 $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($substa
$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\u键
在函数标题中为null
对参数进行求值,并传入这些求值的结果
请记住,在PHP中,分配有一个“返回值”,即分配的值
$foo = 'bar';
echo $foo;
$result = some_function($foo = 'blah');
echo $foo;
此代码将呼出barblah
,并将blah
作为参数传递到some_函数中
这与允许以下操作的机制完全相同:
$a = $b = $c = $d = 42;
,并将42
分配给所有四个变量。对参数进行求值,并将这些求值的结果传入
请记住,在PHP中,分配有一个“返回值”,即分配的值
$foo = 'bar';
echo $foo;
$result = some_function($foo = 'blah');
echo $foo;
此代码将呼出barblah
,并将blah
作为参数传递到some_函数中
这与允许以下操作的机制完全相同:
$a = $b = $c = $d = 42;
,并将42
分配给所有四个变量。对参数进行求值,并将这些求值的结果传入
请记住,在PHP中,分配有一个“返回值”,即分配的值
$foo = 'bar';
echo $foo;
$result = some_function($foo = 'blah');
echo $foo;
此代码将呼出barblah
,并将blah
作为参数传递到some_函数中
这与允许以下操作的机制完全相同:
$a = $b = $c = $d = 42;
,并将42
分配给所有四个变量。对参数进行求值,并将这些求值的结果传入
请记住,在PHP中,分配有一个“返回值”,即分配的值
$foo = 'bar';
echo $foo;
$result = some_function($foo = 'blah');
echo $foo;
此代码将呼出barblah
,并将blah
作为参数传递到some_函数中
这与允许以下操作的机制完全相同:
$a = $b = $c = $d = 42;
,并将42
赋值给所有四个变量。赋值操作的结果就是被赋值的值。例如,我可以这样做:
if($result = do_something_that_may_fail()) {}
无论do\u something\u可能失败()
方法返回的结果是什么,都将分配给$result
,如果没有计算为false,则执行if
块。这样做的副产品是,您仍然可以在if
块中引用$result
在方法调用中也会发生同样的情况,值被赋值,值本身被发送到方法。赋值操作的结果就是被赋值的值。例如,我可以这样做:
if($result = do_something_that_may_fail()) {}
无论do\u something\u可能失败()
方法返回的结果是什么,都将分配给$result
,如果没有计算为false,则执行if
块。这样做的副产品是,您仍然可以在if
块中引用$result
在方法调用中也会发生同样的情况,值被赋值,值本身被发送到方法。赋值操作的结果就是被赋值的值。例如,我可以这样做:
if($result = do_something_that_may_fail()) {}
无论do\u something\u可能失败()
方法返回的结果是什么,都将分配给$result
,如果没有计算为false,则执行if
块。这样做的副产品是,您仍然可以在if
块中引用$result
在方法调用中也会发生同样的情况,值被赋值,值本身被发送到方法。赋值操作的结果就是被赋值的值。例如,我可以这样做:
if($result = do_something_that_may_fail()) {}
无论do\u something\u可能失败()
方法返回的结果是什么,都将分配给$result
,如果没有计算为false,则执行if
块。这样做的副产品是,您仍然可以在if
块中引用$result
方法调用中也发生了同样的情况,正在分配值,并且值本身正在发送到方法。已回答,但要包含来自的引用
赋值表达式的值是指定的值。也就是说,“$a=3”的值是3
已回答,但要包括来自
赋值表达式的值是指定的值。也就是说,“$a=3”的值是3
已回答,但要包括来自
赋值表达式的值是指定的值。也就是说,“$a=3”的值是3
已回答,但要包括来自
赋值表达式的值是指定的值。也就是说,“$a=3”的值是3
不,变量赋值按原样“计算”变量的值。这就是为什么你可以做一些类似于if($myVar=myFunc($myParam)==$myOtherVar){//do something}
@PatrickQ的事情,你绝对应该把它作为answer@ThomasDavidPlat目前的答案更全面。我的评论就是这样。我很少觉得简单的“是/否”答案需要更多的注释。不,变量赋值实际上是“评估”变量的值。这就是为什么你可以做一些类似于if($myVar=myFunc($myParam)==$myOtherVar){//do something}
@PatrickQ的事情,你绝对应该把它作为answer@ThomasDavidPlat目前的答案更全面。我的评论就是这样。我很少觉得简单的“是/否”答案需要更多的评论