Giới thiệu
Toán tử tăng/giảm kiểu C được biểu diễn bằng ++ và -- cũng được định nghĩa trong PHP. Như tên gọi, ++ tăng giá trị toán hạng lên 1, -- giảm giá trị xuống 1. Cả hai là unary operators (chỉ cần một toán hạng). Các toán tử này có thể dùng dạng prefix (trước) hoặc postfix (sau), hoặc trong biểu thức phức tạp hơn.
Cú pháp
$x = 5; $y = 5; $x++; // postfix increment $y--; // postfix decrement ++$y; // prefix increment --$x; // prefix decrement
Khi dùng độc lập, postfix và prefix increment/decrement có hành vi tương tự. $x++ và ++$x đều tăng $x lên 1. Tương tự $y-- và --$y đều giảm $y xuống 1.
Ví dụ
Hiệu ứng postfix/prefix độc lập
<?php $x = 5; $y = 5; $x++; // postfix increment $y--; // postfix decrement echo "x = $x y = $y\n"; ++$y; // prefix increment --$x; // prefix decrement echo "x = $x y = $y\n"; ?>
Kết quả
x = 6 y = 4 x = 5 y = 5
Trong biểu thức gán
Khi dùng trong biểu thức gán, postfix ++ hoặc -- có độ ưu tiên thấp hơn =. Do đó $a = $x++ cho $a = $x rồi mới $x++. Ngược lại, prefix ++/-- có độ ưu tiên cao hơn =. Vì vậy $b = --$y thực hiện --$y trước rồi gán kết quả cho $b.
<?php $x = 5; $y = 5; $a = $x++; // postfix increment echo "a = $a x = $x\n"; $b = --$y; // prefix decrement echo "b = $b y = $y\n"; ?>
Kết quả
a = 5 x = 6 b = 4 y = 4
Tăng/giảm với ký tự ASCII
Tăng/giảm trên biến ký tự ASCII cũng khả thi. Tăng cho ký tự tiếp theo trong bảng ASCII. Nếu vượt quá Z, vòng lặp tiếp theo lặp lại (Z thành AA). Các ký tự non-ASCII (ngoài A-Z, a-z, 0-9) bị bỏ qua bởi toán tử tăng.
<?php
$var = 'A';
for ($i = 1; $i <= 3; $i++) {
echo ++$var . "\n";
}
$var1 = 1;
for ($i = 1; $i <= 3; $i++) {
echo ++$var1 . "\n";
}
?>
Kết quả
B C D 2 3 4