Operatori di incremento/decremento
PHP supporta lo stile C degli operatori di pre- e post-incremento
e decremento.
Nota:
Gli operatori di incremento e decremento agiscono solo su numeri e stringhe.
Array, oggetti, booleani e risorse non ne sono interessati.
Anche decrementare il valore null non ha effetti, ma incrementarlo
darà come risultato 1.
Operatori di incremento/decremento
| Esempio |
Nome |
Effetto |
| ++$a |
Pre-incremento |
Incrementa $a di una unità, quindi restituisce $a. |
| $a++ |
Post-incremento |
Restituisce $a, quindi incrementa $a di una unità. |
| --$a |
Pre-decremento |
Decrementa $a di una unità, quindi restituisce $a. |
| $a-- |
Post-decremento |
Restituisce $a, quindi decrementa $a di una unità. |
Un semplice script di esempio:
Il PHP segue le convenzioni di Perl e non del C quando tratta le operazioni matematiche
sui caratteri. Ad esempio, in PHP e Perl
$a = 'Z'; $a++; modifica $a in 'AA', mentre in C
a = 'Z'; a++; modifica a in '['
(il valore ASCII di 'Z' è 90, quello di '[' è 91).
Si noti che le variabili carattere possono essere incrementate ma non decrementate e
anche in questo caso solo i caratteri e i numeri ASCII (a-z, A-Z e 0-9) sono supportati.
Incrementare/decrementare altre variabili di carattere non ha effetto, la
stringa originale non viene modificata.
Example #1 Operazioni aritmetiche su variabili carattere
<?php
echo '== Alphabets ==' . PHP_EOL;
$s = 'W';
for ($n=0; $n<6; $n++) {
echo ++$s . PHP_EOL;
}
// I caratteri numerici si comportano diversamente
echo '== Digits ==' . PHP_EOL;
$d = 'A8';
for ($n=0; $n<6; $n++) {
echo ++$d . PHP_EOL;
}
$d = 'A08';
for ($n=0; $n<6; $n++) {
echo ++$d . PHP_EOL;
}
?>
Il precedente esempio visualizzerà:
== Characters ==
X
Y
Z
AA
AB
AC
== Digits ==
A9
B0
B1
B2
B3
B4
A09
A10
A11
A12
A13
A14
Incrementare o decrementare valori booleani non ha effetto.
hartmut at php dot net ¶14 years ago
Note that
$a="9D9"; var_dump(++$a); => string(3) "9E0"
but counting onwards from there
$a="9E0"; var_dump(++$a); => float(10)
this is due to "9E0" being interpreted as a string representation of the float constant 9E0 (or 9e0), and thus evalutes to 9 * 10^0 = 9 (in a float context)