dongshang1529 2013-10-21 22:12
浏览 7
已采纳

如果条件在PHP奇怪的情况

I have found a strange situation in php...or maybe I don't remember something well:

<?php

if (isset($_POST["invio"]) && ($_POST["valore1"] && $_POST["valore2"])) {

        if($_POST["valore1"]) {
        $valore1 = $_POST["valore1"];
        }
        if($_POST["valore2"]) {
        $valore2 = $_POST["valore2"];
        }


        function pippo ($x,$y) {

        if($x < $y) {
        return "la variabile $x è minore della variabile $y";
        }
        elseif($x == $y) {
        return "la variabile $x è uguale alla variabile $y";
        }
        else {
        return "la variabile $x è più grande rispetto alla variabile $y";
        }
        }

        $risultato = pippo($valore1,$valore2);

        print $risultato;

}elseif (isset($_POST["invio"]) && ($_POST["valore1"] =="" || $_POST["valore2"] =="") ) {
        print "Manca almeno un valore";
        }

If I try to delete the two parentheses:

}elseif (isset($_POST["invio"]) && $_POST["valore1"] =="" || $_POST["valore2"] =="" ) {
        print "Manca almeno un valore";
        }

The system enters inside the condition with the print.. why does it do this?

  • 写回答

1条回答 默认 最新

  • duandou8120 2013-10-21 22:14
    关注

    AND has higher precedence than OR so

    a && b || c
    

    is interpreted as

    (a && b) || c
    

    Not as

    a && (b || c)
    

    AND is the boolean version of multiplication -- (0 AND 1) is 0 just like (0 * 1) is 0.

    OR is like addition -- (0 OR 1) is 1 just as (0 + 1) is 1.

    A * B + C would also be understood as (A * B) + C.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求螺旋焊缝的图像处理
  • ¥15 blast算法(相关搜索:数据库)
  • ¥15 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解