php短语法理解($ z ++%2)? “a”:“b”;

时间:2017-02-12 18:55:35

标签: php

新手在这里,我不知道php中的($z++ % 2) ? "a" : "b";是什么意思,这段代码给了我旧代码中的下一个警告

  

PHP消息:PHP警告:

中遇到非数字值

4 个答案:

答案 0 :(得分:2)

$z = 5;
echo ($z++ % 2) ? "a" : "b";

(5%2)= 1 =真

=>打印

然后z成为6

答案 1 :(得分:2)

  1. $z++表示使用后$z增加值
  2. $z++ % 2表示剩余的$z/2,并在
  3. 后增加$z
  4. 如果$z%2 == 0,则获得b,如果$z%2 == 1,则获得a
  5. 警告显示,因为$z之前未声明。请在您的代码前添加以下行:

    $z = 0;
    

答案 2 :(得分:1)

此代码评估为" a"当$ z为奇数且" b"当$ z为偶数时,然后将$ z递增1。

$z++将$ z递增1,但仅在表达式中使用它后(请注意,PHP手册指出评估顺序未定义,因此可能会在版本之间发生变化。请参阅example 2。 )

% 2模2(奇数时为1,偶数为0)

? :ternary operator

当$ z为奇数($z++ % 2) == 1时评估为真,结果为" a"。

当$ z为($z++ % 2) == 0时,其评估为false,结果为" b"。

警告可能是因为当执行此代码时,$ z未声明或不是数字(例如字符串)。 %和++运算符仅对数字有效。

答案 3 :(得分:0)

($z++ % 2) ? "a" : "b";这是If / Else的简写版本(:和?作为三元运算符调用)它的工作方式如下

if($z++ % 2){
  "a"
}
else{
  "b"
}
  1. $z++从1
  2. 增加$ z的现有值
  3. %在从2除以后给出剩余值。
  4. 如果参数($z++ % 2)给出任何值,则执行If(" a")。
  5. 如果它给出0,则执行其他部分(" b")。
  6. 示例1:

    $z=10;

    ($z++ % 2)

    (5+1 % 2)

    (6 % 2)

    (0)

    结果为0然后执行b

    阅读本文以获取更多信息:link operators 快乐编码:)