Inkrement och dekrement

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

PHP Inkrementerings-/Dekrementeringsoperatorer



PHP stöder för- och efterinkrement samt dekrementoperatorer. Dessa unära operatorer tillåter att öka eller minska värdet med ett.

Inkrement-/dekrementoperatorer


! Exempel
! Namn
! Effekt
|-
| ++$a
| För-inkrement
| Ökar $a med ett, returnerar sedan $a.
|-
| $a++
| Efterinkrement
| Returnerar $a, ökar sedan $a med ett.
|-
| --$a
| För-dekrement
| Minskar $a med ett, returnerar sedan $a.
|-
| $a--
| Efter-dekrement
| Returnerar $a, minskar sedan $a med ett.
|}

Exempelskript:

<?php
echo 'Efter-inkrement:', PHP_EOL;
$a = 5;
var_dump($a++);
var_dump($a);

echo 'För-inkrement:', PHP_EOL;
$a = 5;
var_dump(++$a);
var_dump($a);

echo 'Efter-dekrement:', PHP_EOL;
$a = 5;
var_dump($a--);
var_dump($a);

echo 'För-dekrement:', PHP_EOL;
$a = 5;
var_dump(--$a);
var_dump($a);
?>


Utskrift från exemplet:
;Efter-inkrement:
:int(5)
:int(6)
;För-inkrement:
:int(6)
:int(6)
;Efter-dekrement:
:int(5)
:int(4)
;För-dekrement:
:int(4)
:int(4)

Varningar


* Inkrement- och dekrementoperatorerna har ingen effekt på värden av typen bool. En E_WARNING utlöses från och med PHP 8.3.0, eftersom detta kommer att implicit omvandla värdet till int i framtiden.
* Dekrementoperatorn har ingen effekt på värden av typen null. En E_WARNING utlöses från och med PHP 8.3.0, eftersom detta kommer att implicit omvandla värdet till int i framtiden.
* Dekrementoperatorn har ingen effekt på icke-numeriska strängar. En E_WARNING utlöses från och med PHP 8.3.0, eftersom ett TypeError kommer att kastas i framtiden.

PERL-stränginkrementfunktion


Varning =


Denna funktion är mjukt avskaffad från och med PHP 8.3.0. Funktionen str_increment() bör användas istället.

Det är möjligt att inkrementera en icke-numerisk sträng i PHP. Strängen måste vara en alfanumerisk ASCII-sträng. Vilket ökar bokstäver upp till nästa bokstav, när den når bokstaven Z överförs inkrementet till värdet till vänster. Till exempel, $a = 'Z'; $a++; blir $a till 'AA'.

<?php
echo '== Alfabetiska strängar ==' . PHP_EOL;
$s = 'W';
for ($n=0; $n<6; $n++) {
echo ++$s . PHP_EOL;
}
// Alfanumeriska strängar beter sig annorlunda
echo '== Alfanumeriska strängar ==' . 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;
}
?>


=== Exempel på utskrift ===
;Alfabetiska strängar:
:X
:Y
:Z
:AA
:AB
:AC
;Alfanumeriska strängar:
:A9
:B0
:B1
:B2
:B3
:B4
:A09
:A10
:A11
:A12
:A13
:A14