小编ajp*_*103的帖子

PHP闭包在IF语句中返回什么?

我的目标是在if()语句中放入一些复杂的逻辑.假设我有一个值数组,如果我的数组中的所有内容都非零,我将执行一些代码.通常情况下,我可以说,$valid = true,foreach我的阵列,并设置$valid = false当发现一个零.然后我会运行我的代码if ($valid).或者,我可以将我的循环放入一个函数中并将函数放在我的函数中if().

但是我很懒,所以我宁愿不要使用一堆"有效"标志,我宁愿不写一个只在一个地方使用的全新功能.

所以让我说我有这个:

if ($q = function() { return 'foo'; }) {
  echo $q;
}
else {
  echo 'false';
}
Run Code Online (Sandbox Code Playgroud)

我期待if得到的'foo',得分为真.我的闭包致力于$q并且语句执行.$q返回字符串foo,并打印'foo'.

相反,我得到了错误Object of class Closure could not be converted to string.

所以让我们试试这个:

if (function() { return false; }) {
  echo 'foo';
}
else {
  echo 'true';
}
Run Code Online (Sandbox Code Playgroud)

我期待我的函数返回false并打印'true'.相反,打印'foo'.

我正在采取的方式有什么问题?好像它在说,"是的,这肯定是一个功能!" 而不是"不,因为函数评估为假".有没有办法做我想做的事情?

php anonymous-function

8
推荐指数
1
解决办法
2541
查看次数

标签 统计

anonymous-function ×1

php ×1