开发者

What is %2 in $id%2

开发者 https://www.devze.com 2022-12-14 04:04 出处:网络
What does %2 do in the following php? $id=(开发者_如何学Cint)@$_REQUEST[\'id\']; echo ( !($id%2) )?

What does %2 do in the following php?

$id=(开发者_如何学Cint)@$_REQUEST['id'];
echo ( !($id%2) )?
    "{'id':$id,'success':1}":
    "{'id':$id,'success':0,'error':'Could not delete subscriber'}";


% is the modulus operator. % 2 is therefore the remainder after division by two, so either 0 (in case $id was even) or 1 (in case $id was odd).

The expression !($id % 2) uses automatic conversion to a boolean value (in which 0 represents false and everything non-zero represents true) and negates the result. So the result of that expression is true if $id was even and false if it was odd. That also determines what the echo prints there. Apparently an even value for $id signals success.

A slightly more elaborate but maybe easier to understand way to write above statement would be:

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

But that spoils all the fun with the ternary operator. Still, I'd have written the condition not as !($id%2) but rather as ($id % 2 != 0). Mis-using integers for boolean values leads to some hard to diagnose errors sometimes :-)


% is the modulo operator. So $id % 2 will return 0 if the value of $id is even and 1 if the value is odd.


This is checking if the ID is even. If it's even, then PHP will evaluate that 0 as false.


Check out the Modulus section for PHP, Basically if it's Modulus 2 the Success else error


As the others said, % will give you the remainder after dividing by that number. In effect this code block will echo "success = 1" if the id is even (or not a number, or not defined(!!)), and "success = 0" if the id is odd.

0

精彩评论

暂无评论...
验证码 换一张
取 消