Php 返回值取决于某个变量的布尔值
我有一个Php 返回值取决于某个变量的布尔值,php,variable-assignment,boolean-expression,Php,Variable Assignment,Boolean Expression,我有一个回调函数,第二个参数是数组。 所以,我有这样的想法: public function foo ($something, $callback) { /** * function body */ $booleanOrArray = $this->bar(); if ( is_callable ( $callback ) ) { return call_user_func ( $callback, !is_array($booleanOrArray),
回调
函数,第二个参数是数组
。
所以,我有这样的想法:
public function foo ($something, $callback) {
/**
* function body
*/
$booleanOrArray = $this->bar();
if ( is_callable ( $callback ) ) {
return call_user_func ( $callback, !is_array($booleanOrArray), $booleanOrArray || [ ]);
}
throw new Exception('A callback function must be defined.');
}
因此,在call_user_func
中,有一个变量称为$booleanOrArray
。这是因为,如果函数bar
的过程完成得很好,则返回带有数据的数组,否则,bar函数返回false
;因此,如果bar
返回false
,则回调
函数中的第一个参数由is_数组($booleanOrArray)
确定,因此,如果foo返回false
,则存在错误,如果是数组
,则该参数将为false
但是,在我的应用程序中,我强制用户定义回调
函数,如下所示:
$MyClass = new ClassInstance();
$MyClass->foo('firstParam', function ( $error, Array $data ) {
if ( ! $error ) {
var_dump($data);
}
else {
print 'Hey!';
}
});
但是,在编写了所有这些代码之后,我惊讶地发现$booleanOrArray | |[]总是返回false
在Javascript中,如果I codevar x=foo | | bar
,如果foo
为null
,或false
,或undefined
,则x
将具有条
值,反之亦然
因此,问题是:
- 这在php中是可能的,还是我必须执行类似于
$x=($booleanOrArray)的操作$布尔数组:[]
- 在这种情况下,您是否有改进回调函数的想法?(不是基于意见,只是标准)
类似于$x=($booleanOrArray)的东西$布尔数组:[]
是的,您甚至可以使用缩短的三元语法:
$booleanOrArray ?: []
如果它不是falsy或空数组,则会生成$booleanOrArray
类似于$x=($booleanOrArray)的东西$布尔数组:[]
是的,您甚至可以使用缩短的三元语法:
$booleanOrArray ?: []
这将导致$booleanOrArray
如果它不是falsy或空数组,否则将导致它。建议:您可以使用可调用的
类型提示,而不是手动强制执行它并引发异常。在我的真实应用程序中,我通常通过func_get_args()获取函数参数,但这是一个很棒的数据,谢谢!您可以这样使用:$x=true或$x=[];var_dump(x美元)
和$x=false或$x=[];var_dump(x美元)
但是@dev null allender建议的短三元运算符似乎更好。建议:您可以使用可调用的类型提示,而不是手动强制执行它并引发异常。在我的实际应用中,我通过func_get_args()获得函数参数,但这是一个很好的数据,谢谢!您可以这样使用:$x=true或$x=[];var_dump(x美元)
和$x=false或$x=[];var_dump(x美元)
但是@dev null居住者建议的短三元运算符似乎更好。