Оператори інкременту та декременту

PHP підтримує префіксні та постфіксні оператори інкременту та декременту. Ці унарні оператори дозволяють збільшувати чи зменшувати значення на одиницю.

Оператори інкременту та декременту

ПрикладНазваниеДействие
++$aПрефіксний інкрементЗбільшує $a на одиницю, а потім повертає значення $a.
$a++Постфіксний інкрементПовертає значення $a, а потім збільшує $a на одиницю.
--$aПрефіксний декрементЗменшує $a на одиницю, а потім повертає значення $a.
$a--Постфіксний декрементПовертає значення $a, а потім зменшує $a на одиницю.

Наведемо приклад простого скрипту:

Loading...

Результат виконання наведеного прикладу:

Постфиксный инкремент:
int(5)
int(6)
Префиксный инкремент:
int(6)
int(6)
Постфиксный декремент:
int(5)
int(4)
Префиксный декремент:
int(4)
int(4)

Увага

Оператори інкременту та декременту не впливають на логічні значення (bool). Починаючи з PHP 8.3.0, викликається помилка рівня. E_WARNING, Тому що в майбутньому це буде неявно приведено до значення цілого числа (int).

Оператор декремента не впливає значення null. Починаючи з PHP 8.3.0, викликається помилка рівня. E_WARNING, Тому що в майбутньому це буде неявно приведено до значення цілого числа (int).

Оператор декремента не влияет на не-числові рядки. Починаючи з PHP 8.3.0, викликається помилка рівня. **E_WARNING**тому в майбутньому буде викидатися виняток TypeError

Зауваження :

Внутрішні об'єкти, які підтримують перевантаження додавання та/або віднімання, можуть бути інкрементовані та/або декрементовані. Один такий внутрішній об'єкт — це GMP

Функція збільшення рядка PERL

Увага

Починаючи з PHP 8.3.0, ця функція м'яко застаріла. Натомість викликають функцію str_increment()

У PHP можна інкрементувати не- числовий рядок. Рядок має бути буквенно-цифровою послідовністю в кодуванні ASCII. Літери збільшуються до наступної літери, досягши літери Z інкремент переноситься до наступного розряду зліва. Наприклад, вираз $a = 'Z'; $a++;превратит значение переменной $a в значение«AA»

Приклад #1 Приклад збільшення рядка PERL

Loading...

Результат виконання наведеного прикладу:

== Буквенные строки ==
X
Y
Z
AA
AB
AC
== Буквенно-цифровые строки ==
A9
B0
B1
B2
B3
B4
A09
A10
A11
A12
A13
A14

Увага

Якщо літерно-цифровий рядок може бути інтерпретований як числовий рядоквона буде приведена до типу int або float. Ця проблема постає особливо гостро з рядками, які виглядають як числа з точкою, що плаває, записані в науковій нотації. Функція str_increment() не страждає від цих неявних наведень типів.

Приклад #2 Літерно-цифровий рядок, перетворений на число з плаваючою точкою

Loading...

Результат виконання наведеного прикладу:

string(3) "5e0"
float(6)

Так відбувається тому, що значення «5e0» було інтерпретовано як число з плаваючою точкою (float) та наведено до значення 5.0 перед початком збільшення.