2009-12-10 103 views
4

%2在下面的php中做了什么?

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

回答

16

%modulus operator% 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)。误用整数布尔值,导致一些难以诊断的错误,有时:-)

0

这是检查ID是否是偶数。如果它是偶数,那么PHP会将0评估为false。

0

退房的Modulus section为PHP,基本上,如果它的模数2的成功别人错误

0

正如有人说,%将由数除以之后给你剩下。实际上,如果id是偶数(或不是数字,或未定义(!!)),则该代码块将回显“成功= 1”,如果id是奇数,则代码“成功= 0”。