PHP поддерживает операторы пре- и постинкремента и декремента в стиле C.
Примечание . Операторы увеличения/уменьшения влияют только на числа и строки. Массивы, объекты, логические значения и ресурсы не затрагиваются. Уменьшение
null
значений также не имеет никакого эффекта, но их увеличение приводит к1
.
Пример | Имя | Эффект |
---|---|---|
++$а | Предварительное увеличение | Увеличивает $a на единицу, затем возвращает $a . |
$а++ | Постинкремент | Возвращает $a , затем увеличивает $a на единицу. |
--$а | Предекремент | Уменьшает $a на единицу, затем возвращает $a . |
$а-- | Постдекремент | Возвращает $a , затем уменьшает $a на единицу. |
Вот простой пример скрипта:
<?php
echo "<h3>Postincrement</h3>";
$a = 5;
echo "Should be 5: " . $a++ . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";
echo "<h3>Preincrement</h3>";
$a = 5;
echo "Should be 6: " . ++$a . "<br />\n";
echo "Should be 6: " . $a . "<br />\n";
echo "<h3>Postdecrement</h3>";
$a = 5;
echo "Should be 5: " . $a-- . "<br />\n";
echo "Should be 4: " . $a . "<br />\n";
echo "<h3>Predecrement</h3>";
$a = 5;
echo "Should be 4: " . --$a . "<br />\n";
echo "Should be 4: " . $a . "<br />\n";
?>
PHP следует соглашению Perl при работе с арифметическими операциями над символьными переменными, а не в C. Например, в PHP и Perl $a = 'Z'; $a++;
превращается $a
в 'AA'
, а в C a = 'Z'; a++;
превращается a
в '['
(значение ASCII равно 'Z'
90, значение ASCII равно '['
91). Обратите внимание, что символьные переменные могут увеличиваться, но не уменьшаться, и даже в этом случае поддерживаются только простые алфавиты и цифры ASCII (az, AZ и 0-9). Увеличение/уменьшение других символьных переменных не влияет, исходная строка остается неизменной.
Пример #1 Арифметические операции над символьными переменными
<?php
echo '== Alphabets ==' . PHP_EOL;
$s = 'W';
for ($n=0; $n<6; $n++) {
echo ++$s . PHP_EOL;
}
// Digit characters behave differently
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;
}
?>
Приведенный выше пример выведет:
== Персонажи ==
Икс
Д
Z
АА
АБ
переменный ток
== Цифры ==
А9
B0
Б1
Би 2
Б3
В4
А09
А10
А11
А12
А13
А14
Увеличение или уменьшение логических значений не имеет никакого эффекта.
0 комментариев