Reference — What does this symbol mean in PHP? Reference — What does this symbol mean in PHP? php php

Reference — What does this symbol mean in PHP?


Incrementing / Decrementing Operators

++ increment operator

-- decrement operator

Example    Name              Effect---------------------------------------------------------------------++$a       Pre-increment     Increments $a by one, then returns $a.$a++       Post-increment    Returns $a, then increments $a by one.--$a       Pre-decrement     Decrements $a by one, then returns $a.$a--       Post-decrement    Returns $a, then decrements $a by one.

These can go before or after the variable.

If put before the variable, the increment/decrement operation is done to the variable first then the result is returned. If put after the variable, the variable is first returned, then the increment/decrement operation is done.

For example:

$apples = 10;for ($i = 0; $i < 10; ++$i) {    echo 'I have ' . $apples-- . " apples. I just ate one.\n";}

Live example

In the case above ++$i is used, since it is faster. $i++ would have the same results.

Pre-increment is a little bit faster because it really increments the variable and after that 'returns' the result. Post-increment creates a special variable, copies there the value of the first variable and only after the first variable is used, replaces its value with second's.

However, you must use $apples--, since first, you want to display the current number of apples, and then you want to subtract one from it.

You can also increment letters in PHP:

$i = "a";while ($i < "c") {    echo $i++;}

Once z is reached aa is next, and so on.

Note that character variables can be incremented but not decremented and even so only plain ASCII characters (a-z and A-Z) are supported.


Stack Overflow Posts:


Bitwise Operator

What is a bit? A bit is a representation of 1 or 0. Basically OFF(0) and ON(1)

What is a byte? A byte is made up of 8 bits and the highest value of a byte is 255, which would mean every bit is set. We will look at why a byte's maximum value is 255.

-------------------------------------------|      1 Byte ( 8 bits )                  |-------------------------------------------|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     -------------------------------------------

This representation of 1 Byte

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 Byte)

A few examples for better understanding

The "AND" operator: &

$a =  9;$b = 10;echo $a & $b;

This would output the number 8. Why? Well let's see using our table example.

-------------------------------------------|      1 Byte ( 8 bits )                  |-------------------------------------------|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     -------------------------------------------|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    -------------------------------------------|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|------------------------------------------- |      &     |   0|  0|  0|  0| 1| 0| 0| 0|------------------------------------------- 

So you can see from the table the only bit they share together is the 8 bit.

Second example

$a =  36;$b = 103;echo $a & $b; // This would output the number 36.$a = 00100100$b = 01100111

The two shared bits are 32 and 4, which when added together return 36.

The "Or" operator: |

$a =  9;$b = 10;echo $a | $b;

This would output the number 11. Why?

-------------------------------------------|      1 Byte ( 8 bits )                  |-------------------------------------------|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     -------------------------------------------|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    -------------------------------------------|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|------------------------------------------- |      |     |   0|  0|  0|  0| 1| 0| 1| 1|-------------------------------------------

You will notice that we have 3 bits set, in the 8, 2, and 1 columns. Add those up: 8+2+1=11.


<=> Spaceship Operator

Added in PHP 7

The spaceship operator <=> is the latest comparison operator added in PHP 7. It is a non-associative binary operator with the same precedence as equality operators (==, !=, ===, !==). This operator allows for simpler three-way comparison between left-hand and right-hand operands.

The operator results in an integer expression of:

  • 0 when both operands are equal
  • Less than 0 when the left-hand operand is less than the right-hand operand
  • Greater than 0 when the left-hand operand is greater than the right-hand operand

e.g.

1 <=> 1; // 01 <=> 2; // -12 <=> 1; // 1

A good practical application of using this operator would be in comparison type callbacks that are expected to return a zero, negative, or positive integer based on a three-way comparison between two values. The comparison function passed to usort is one such example.

Before PHP 7 you would write...

$arr = [4,2,1,3];usort($arr, function ($a, $b) {    if ($a < $b) {        return -1;    } elseif ($a > $b) {        return 1;    } else {        return 0;    }});

Since PHP 7 you can write...

$arr = [4,2,1,3];usort($arr, function ($a, $b) {    return $a <=> $b;    // return $b <=> $a; // for reversing order});