初始化变量并在if子句中使用它

时间:2016-06-06 09:27:24

标签: php if-statement operators

if($y=3){echo $y;}if($y=1 and $y>2){echo $y;}按预期工作。但是,我想知道为什么不能使用返回if($x=1 && $x>3){echo $x;}的{​​{1}}。 (Notice: Undefined variable: x运算符的优先级高于and)如果&&首先计算正确的操作数,那么评估后左手不应该有效吗?

2 个答案:

答案 0 :(得分:0)

  1. $y=1 and $y>2 按预期工作,因为:
  2. 根据operator precedence规则,=的优先级高于and。因此,它评估为:

    ($y = 1) $y>2
    

    所以,分配发生了。 (括号内的表达式首先计算)

    1. $x=1 && $x>3 无法正常工作,因为:
    2. 根据operator precedence规则,&&的优先级高于=。因此,它评估为:

      $x=(1 && $x)>3
      

      当然,$x与最初未声明的1进行比较。因此弹出undefined variable错误。因此,如果要更改顺序,请将表达式更改为:

      ($x=3) && $x>2
      

      所以你的if会是这样的:

      if(($x=3) && $x>2) {
          echo $x;
      }
      

答案 1 :(得分:0)

if($y=1 and $y>2){echo $y;}

" ="赋值运算符的优先级高于"和"。

" ="赋值运算符初始化$ y并按预期工作。

if($x=1 && $x>3){echo $x;}

" ="赋值运算符的优先级低于"&&"。

"&安培;&安培;"运算符在赋值之前执行,因此在这种情况下$ x未定义/初始化并返回通知:未定义变量:x。