什么是$ id%2中的%2

shi*_*hin 4 php syntax

%2在以下php中做了什么?

$id=(int)@$_REQUEST['id'];
echo ( !($id%2) )?
    "{'id':$id,'success':1}":
    "{'id':$id,'success':0,'error':'Could not delete subscriber'}";
Run Code Online (Sandbox Code Playgroud)

Joe*_*oey 17

%模数运算符.% 2因此,除以2之后的余数,所以0(如果$id是偶数)或1(如果$id是奇数).

该表达式!($id % 2)使用自动转换为布尔值(其中0表示false,所有非零表示true)并取消结果.因此,如果$id是偶数且false如果它是奇数,则该表达式的结果是真的.这也决定了echo那里的印刷品.显然,$id信号成功的价值均匀.

写一个稍微复杂但可能更容易理解的方式来编写上述语句将是:

if ($id % 2 == 0)
   echo "{'id':$id,'success':1}";
else
   echo "{'id':$id,'success':0,'error':'Could not delete subscriber'}";
Run Code Online (Sandbox Code Playgroud)

但这会破坏三元运营商的所有乐趣.尽管如此,我还是写了这个条件不是,!($id%2)而是作为($id % 2 != 0).错误使用整数作为布尔值有时会导致一些难以诊断的错误:-)