duancaiyi7567 2013-04-30 01:25
浏览 38
已采纳

如何评估条件中的所有表达式?

I know PHP uses lazy-evaluation / short-circuit operators. But say I wanted to evaluate all the expressions in a condition, for example:

$a = "Apple";
$b = "Banana";
$c = "Cherry";

function check($fruit) {
    if ($fruit != "Banana") {
        echo "$fruit is good.
";
        return true;
    } else {
        echo "$fruit is bad.
";
        return false;
    }
}

if (check($a) && check($b) && check($c)) {
    echo "Yummy!
";
}

Because of lazy-evaluation, this will only output:

Apple is good.
Banana is bad.

Rather than the desired output of:

Apple is good.
Banana is bad.
Cherry is good.

This is useful in form validation for instance.

So my question: Is there any way to force all expressions in a condition to be evaluated in PHP, and if not, what would be the best/quickest way to get the desired result in the example above?

  • 写回答

2条回答 默认 最新

  • duanjie1339 2013-04-30 01:33
    关注

    You can use bitwise AND (single ampersand: &)

    $a = "Apple";
    $b = "Banana";
    $c = "Cherry";
    
    function check($fruit) {
        echo ($fruit != "Banana") ? "$fruit is good.
    " : "$fruit is bad.
    ";
    }
    
    if (check($a) & check($b) & check($c)) {
        echo "Yummy!
    ";
    }
    

    Prints:

    Apple is good.

    Banana is bad.

    Cherry is good.

    Example: http://sandbox.onlinephpfunctions.com/code/07092a9d6636ae8ddafce024d7cc74643e311e9c

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 mmocr的训练错误,结果全为0
  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀