什么是$ id%2中的%2

时间:2009-12-10 15:27:04

标签: php syntax

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

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

5 个答案:

答案 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”。