Etuliitteinen ja jälkiliitteinen tyyppi PHP:ssä
Itse asiassa inkrementti- ja dekrementtioperaatiot
voidaan kirjoittaa kahdella tavalla. Jälkiliitteisessä
muodossa operaatio kirjoitetaan muuttujan nimen jälkeen,
näin: $a++, kun taas etuliitteisessä
muodossa - ennen muuttujan nimeä, näin:
++$a. Katsotaan esimerkkien avulla,
mikä ero on näiden kahden tavan välillä.
Seuraavassa esimerkissä ensimmäinen echo tulostaa
0, koska ensin tapahtuu tulostus
näytölle, ja vasta sitten muuttuja kasvaa:
<?php
$num = 0;
echo $num++; // tulostaa 0, koska muuttuja kasvaa vasta echo:n jälkeen
echo $num; // tulostaa 1 - muuttuja on muuttunut
?>
Mutta nyt muuttuja kasvaa ensin, ja vasta sitten tapahtuu tulostus näytölle:
<?php
$num = 0;
echo ++$num; // tulostaa 1 - muuttuja kasvoi välittömästi
?>
Tällainen käyttäytyminen pätee ei vain näytölle tulostukseen, vaan myös sijoittamiseen:
<?php
$num1 = 0;
$num2 = $num1++; // muuttujaan $num2 kirjoitetaan 0
echo $num2; // tulostaa 0
echo $num1; // tulostaa 1 - muuttuja $num1 muuttui $num2:een kirjoittamisen jälkeen
?>
Mutta nyt vaihdetaan jälkiliitteinen muoto etuliitteiseksi:
<?php
$num1 = 0;
$num2 = ++$num1; // muuttujaan $num2 kirjoitetaan 1
echo $num2; // tulostaa 1
?>
Jos operaatiomme suoritetaan omalla rivillään, etuliitteisen ja jälkiliitteisen muodon välillä ei ole eroa:
<?php
$num = 0;
++$num;
$num++;
echo $num; // tulostaa 2
?>
Älä käynnistä koodia, päätä, mitä tulostetaan näytölle:
<?php
$num = 3;
echo ++$num;
?>
Älä käynnistä koodia, päätä, mitä tulostetaan näytölle:
<?php
$num = 3;
echo $num++;
?>
Älä käynnistä koodia, päätä, mitä tulostetaan näytölle:
<?php
$num = 3;
echo --$num;
?>
Älä käynnistä koodia, päätä, mitä tulostetaan näytölle:
<?php
$num = 3;
echo $num--;
?>
Älä käynnistä koodia, päätä, mitä tulostetaan näytölle:
<?php
$num1 = 3;
$num2 = ++$num1;
echo $num1;
echo $num2;
?>
Älä käynnistä koodia, päätä, mitä tulostetaan näytölle:
<?php
$num1 = 3;
$num2 = $num1++;
echo $num1;
echo $num2;
?>
Älä käynnistä koodia, päätä, mitä tulostetaan näytölle:
<?php
$num1 = 3;
$num2 = --$num1;
echo $num1;
echo $num2;
?>
Älä käynnistä koodia, päätä, mitä tulostetaan näytölle:
<?php
$num1 = 3;
$num2 = $num1--;
echo $num1;
echo $num2;
?>
Älä käynnistä koodia, päätä, mitä tulostetaan näytölle:
<?php
$num1 = 3;
$num1++;
$num2 = $num1--;
echo $num1++;
echo --$num2;
?>