What does %2 do in the following php?
$id=(int)@$_REQUEST['id'];
echo ( !($id%2) )?
"{'id':$id,'success':1}":
"{'id':$id,'success':0,'error':'Could not delete subscriber'}";
What does %2 do in the following php?
$id=(int)@$_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.
For integers, the %
is the modulus operator, i.e. it returns the remainder after dividing by two.
Effectively, it checks whether id
is odd or even. The expression !($id % 2)
checks if the remainder is zero, meaning it is true if the number is even.
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.