6
votes

What is the explanation for PHP's operator % in full detail?

Including examples would be nice!

9

9 Answers

17
votes

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

1
votes

% is the modulus operator.

An example

$num1 = 160;
$num2 = 15;
$result = $num1 % $num2;
echo "The modulus of these numbers is $result";
0
votes

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.

0
votes

% is used for the remainder.

Example:

Print if a number is even or odd

  (@num % 2 == 0 )? 'even' : 'odd'
0
votes

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
0
votes

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('&lt;tr&gt;');

    echo('&lt;td&gt;'.$i.'&lt;/td&gt;');

    if ($i%3 == 2)
        echo('&lt;/tr&gt;');
}
0
votes

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;?>">&nbsp;</div><?
}
0
votes

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;
0
votes
$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