PHP结合运算符&&?

时间:2013-11-03 12:50:54

标签: php boolean-logic boolean-operations

我有这样的代码:

$finalResult = true;

$finalResult = $finalResult && function_01();
// some code here
$finalResult = $finalResult && function_02();
// some many lines of code here
$finalResult = $finalResult && function_XX();


我正在寻找一种方法如何缩短代码(仅出于人类可读性的原因),如下所示:

$finalResult = true;

$finalResult &&= function_01();
// some code here
$finalResult &&= function_02();
// some many lines of code here
$finalResult &&= function_XX();

但当然这不起作用,运算符&=不是布尔值,而是二进制。

我该怎么做?
感谢。

3 个答案:

答案 0 :(得分:1)

$names = array('function01','function02'...);
$result = true;
foreach($names as $caller)
{
  $result = $result && $caller();
}

否则你可以寻找call_user_func(http://us3.php.net/call_user_func)而不是$ caller()

这不是很棒,但它更短:/不是什么大不了的事。

修改 嗯...我想在你编辑之后这个解决方案没有更多功能......我应该删除吗?

我还会通过添加一个进行这些检查的类来重新考虑代码的逻辑:如果所有检查逻辑都在一个类中,其目的只是为了确保可读性的好处

答案 1 :(得分:1)

只有你知道结果后,Stormsson才会改进 - 完成:

$names = array( 'function01','function02'... );
$result = true;

foreach( $names as $caller )
{
    if ( $result == false ) break; // short circuit

    $ret = $caller()
    if ( $ret == false )
    {
        $result = false;
        break; // short circuit
    }

    $result = $result && $ret;
}

答案 2 :(得分:0)

好吧,毕竟看起来我不会比原版更简单。

对于那些不明白为什么我想以某种“短”形式拥有它的人 - 唯一的理由是让它更短更好。正是为什么有可能为了美而写$a += 3的原因。

无论如何,感谢大家:)