Tipos prefixo e pós-fixo em PHP
Na verdade, as operações de incremento e decremento
podem ser escritas de duas maneiras. Na forma
pós-fixa
a operação é escrita após o nome da variável,
assim: $a++, e na forma
prefixa
- antes do nome da variável, assim:
++$a. Vamos ver em exemplos
qual é a diferença entre as duas maneiras.
No exemplo a seguir, o primeiro echo exibirá
0, porque primeiro ocorrerá a saída
para a tela, e só então a variável será incrementada:
<?php
$num = 0;
echo $num++; // exibirá 0, porque a variável só aumenta após o echo
echo $num; // exibirá 1 - a variável mudou
?>
E agora a variável será incrementada primeiro, e só então será exibida na tela:
<?php
$num = 0;
echo ++$num; // exibirá 1 - a variável aumentou imediatamente
?>
Este comportamento é válido não apenas para saída para a tela, mas também para atribuição:
<?php
$num1 = 0;
$num2 = $num1++; // na variável $num2 será escrito 0
echo $num2; // exibirá 0
echo $num1; // exibirá 1 - a variável $num1 mudou após a gravação em $num2
?>
E agora vamos mudar a forma pós-fixa para a prefixa:
<?php
$num1 = 0;
$num2 = ++$num1; // na variável $num2 será escrito 1
echo $num2; // exibirá 1
?>
Se nossa operação é executada em uma linha separada, não há diferença entre as formas prefixa e pós-fixa:
<?php
$num = 0;
++$num;
$num++;
echo $num; // exibirá 2
?>
Sem executar o código, determine o que será exibido na tela:
<?php
$num = 3;
echo ++$num;
?>
Sem executar o código, determine o que será exibido na tela:
<?php
$num = 3;
echo $num++;
?>
Sem executar o código, determine o que será exibido na tela:
<?php
$num = 3;
echo --$num;
?>
Sem executar o código, determine o que será exibido na tela:
<?php
$num = 3;
echo $num--;
?>
Sem executar o código, determine o que será exibido na tela:
<?php
$num1 = 3;
$num2 = ++$num1;
echo $num1;
echo $num2;
?>
Sem executar o código, determine o que será exibido na tela:
<?php
$num1 = 3;
$num2 = $num1++;
echo $num1;
echo $num2;
?>
Sem executar o código, determine o que será exibido na tela:
<?php
$num1 = 3;
$num2 = --$num1;
echo $num1;
echo $num2;
?>
Sem executar o código, determine o que será exibido na tela:
<?php
$num1 = 3;
$num2 = $num1--;
echo $num1;
echo $num2;
?>
Sem executar o código, determine o que será exibido na tela:
<?php
$num1 = 3;
$num1++;
$num2 = $num1--;
echo $num1++;
echo --$num2;
?>