0

我有这样的代码:

$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();

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

我该怎么做?
谢谢。

4

3 回答 3

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( )

它不是很精彩,但它更短:/没什么大不了的

编辑: 嗯......我想在你编辑后这个解决方案不再实用......我应该删除它吗?

我还将通过添加一个进行这些检查的类来重新考虑您的代码逻辑:如果所有检查逻辑都在一个目的只是为了您肯定可以从可读性中受益的类中

于 2013-11-03T13:02:40.487 回答
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;
}
于 2013-11-03T13:09:59.563 回答
0

好吧,毕竟我似乎不会比原来的更简单。

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

无论如何,谢谢大家:)

于 2013-11-03T19:29:14.730 回答