%2在以下php中做了什么?
$id=(int)@$_REQUEST['id'];
echo ( !($id%2) )?
"{'id':$id,'success':1}":
"{'id':$id,'success':0,'error':'Could not delete subscriber'}";
答案 0 :(得分:16)
%
是modulus operator。因此,% 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'}";
但这会破坏三元运营商的所有乐趣。不过,我的条件不是!($id%2)
,而是($id % 2 != 0)
。错误使用整数作为布尔值有时会导致一些难以诊断的错误: - )
答案 1 :(得分:2)
%
is the modulo operator.如果$id % 2
的值为偶数,则0
将返回$id
,如果值为奇数,则1
将返回{{1}}。
答案 2 :(得分:0)
这是检查ID是否均匀。如果它是偶数,那么PHP会将该0评估为false。
答案 3 :(得分:0)
查看PHP的Modulus section,基本上是否是模数2成功的其他错误
答案 4 :(得分:0)
正如其他人所说,%
会在除以该数字后给出余数。实际上,如果id为偶数(或者不是数字,或者没有定义(!!)),则此代码块将回显“success = 1”,如果id为奇数,则此代码块将回显“success = 0”。