What is the explanation for PHP's operator %
in full detail?
Including examples would be nice!
What is the explanation for PHP's operator %
in full detail?
Including examples would be nice!
It's the modulus operator, which gives the integer remainder of a division e.g.
7 / 2 = 3.5 // 3 remainder 1
7 % 2 = 1 // the remainder
Obvious real world example is working out whether a number is odd or even
if (($n % 2) == 0) the number is even, else it's odd... useful when you want to show alternate rows in a table in different colours
By example, %
may be used to set an additional CSS class for every third element in HTML:
for ($i = 1; $i <= 30; $i++) {
$additionalCssClass = ($i % 3 == 0 ) ? ' last' : '';
?><div class="catalogItem<?php echo $additionalCssClass;?>"> </div><?
}
%
is used for the remainder.
Example:
Print if a number is even or odd
(@num % 2 == 0 )? 'even' : 'odd'
It's the modulus operator. It gives you the "remainder" after a division. It's a fairly standard operator.
Here is the PHP reference for Arithmetic Operators.
It will give you the modulo, or "mod", of two numbers, which is the remainder when you divide two numbers. It's a common arithmetic operator, and I can't think of a language that doesn't have it. More information is in Modulo operation.
There are two ways that you can use it. The most common is like any other arithmetic operator:
$bwah = 3 % 1; // == 0
$bwah = 10 % 3; // == 1
There is also a shorthand way of doing it, just like +=
, -=
, *=
, and /=
:
$bwah = 10;
$bwah %= 3; // == 1 ... it's like saying 10 % 3
Just a use of the % modulus operator:
if($nextImage == $ImagesTotal){
//reset counting
$nextImage = 0;
} else {
//increase counting
$nextImage++;
}
can be simplified to:
$nextImage = ++$nextImage % $ImagesTotal;
//$nextImage will allways be a value between 0 and $ImagesTotal;
As a real-word problem I use it all over for generating HTML, especially tables:
//Rows
for ($i=0; $i<30; $i++) {
if ($i%3 == 0)
echo('<tr>');
echo('<td>'.$i.'</td>');
if ($i%3 == 2)
echo('</tr>');
}
$length = 38;
$feet = floor($length / 12);
$inches = $length % 12;
echo 'This is '.$feet.' feet and '.$inches.' inches';
Prints This is 3 feet and 2 inches