Inkrement och dekrement: Skillnad mellan sidversioner
Admin (diskussion | bidrag) |
Admin (diskussion | bidrag) Ingen redigeringssammanfattning |
||
Rad 1: | Rad 1: | ||
== PHP Inkrementerings-/Dekrementeringsoperatorer == | == PHP Inkrementerings-/Dekrementeringsoperatorer == | ||
<br> | <br> | ||
<br>PHP stöder | <br>PHP stöder pre- och post-inkrement och dekrementoperatorer. Dessa unära operatorer tillåter att inkrementera eller dekrementera värdet med ett. | ||
<br> | |||
=== Inkrement-/dekrementoperatorer === | === Inkrement-/dekrementoperatorer === | ||
{| class="wikitable" | {| class="wikitable" | ||
! Exempel | |||
! Namn | |||
! Effekt | |||
|- | |||
| ++$a | |||
| Pre-inkrement | |||
| Ökar $a med ett, sedan returneras $a. | |||
|- | |||
| $a++ | |||
| Post-inkrement | |||
| Returnerar $a, sedan ökas $a med ett. | |||
|- | |||
| --$a | |||
| Pre-dekrement | |||
| Minskar $a med ett, sedan returneras $a. | |||
|- | |||
| $a-- | |||
| Post-dekrement | |||
| Returnerar $a, sedan minskas $a med ett. | |||
|} | |||
<br> | <br> | ||
'''Exempelskript:''' | |||
<br><code> | <br><code> | ||
<br><?php | <br><?php | ||
<br>echo ' | <br>echo 'Post-inkrement:', PHP_EOL; | ||
<br>$a = 5; | <br>$a = 5; | ||
<br>var_dump($a++); | <br>var_dump($a++); | ||
<br>var_dump($a); | <br>var_dump($a); | ||
<br> | <br> | ||
<br>echo ' | <br>echo 'Pre-inkrement:', PHP_EOL; | ||
<br>$a = 5; | <br>$a = 5; | ||
<br>var_dump(++$a); | <br>var_dump(++$a); | ||
<br>var_dump($a); | <br>var_dump($a); | ||
<br> | <br> | ||
<br>echo ' | <br>echo 'Post-dekrement:', PHP_EOL; | ||
<br>$a = 5; | <br>$a = 5; | ||
<br>var_dump($a--); | <br>var_dump($a--); | ||
<br>var_dump($a); | <br>var_dump($a); | ||
<br> | <br> | ||
<br>echo ' | <br>echo 'Pre-dekrement:', PHP_EOL; | ||
<br>$a = 5; | <br>$a = 5; | ||
<br>var_dump(--$a); | <br>var_dump(--$a); | ||
Rad 52: | Rad 52: | ||
<br> | <br> | ||
<br>'''Utskrift från exemplet:''' | <br>'''Utskrift från exemplet:''' | ||
<br>; | <br>;Post-inkrement: | ||
<br>:int(5) | <br>:int(5) | ||
<br>:int(6) | <br>:int(6) | ||
<br>; | <br>;Pre-inkrement: | ||
<br>:int(6) | <br>:int(6) | ||
<br>:int(6) | <br>:int(6) | ||
<br>; | <br>;Post-dekrement: | ||
<br>:int(5) | <br>:int(5) | ||
<br>:int(4) | <br>:int(4) | ||
<br>; | <br>;Pre-dekrement: | ||
<br>:int(4) | <br>:int(4) | ||
<br>:int(4) | <br>:int(4) | ||
<br> | <br> | ||
=== Varning === | |||
<br>* Inkrement- och dekrementoperatorerna har ingen effekt på värden av typen bool. Ett E_WARNING utlöses från och med PHP 8.3.0, eftersom detta kommer att implicit omvandla värdet till int i framtiden. | |||
<br>* Dekrementoperatorn har ingen effekt på värden av typen null. Ett E_WARNING utlöses från och med PHP 8.3.0, eftersom detta kommer att implicit omvandla värdet till int i framtiden. | |||
<br>* Dekrementoperatorn har ingen effekt på icke-numeriska strängar. Ett E_WARNING utlöses från och med PHP 8.3.0, eftersom ett TypeError kommer att kastas i framtiden. | |||
<br> | |||
== PERL-stränginkrementfunktion == | == PERL-stränginkrementfunktion == | ||
<br> | <br> | ||
== Varning === | === Varning === | ||
<br>Denna funktion är mjukt avskaffad från och med PHP 8.3.0. Funktionen '''str_increment()''' bör användas istället. | <br>Denna funktion är mjukt avskaffad från och med PHP 8.3.0. Funktionen '''str_increment()''' bör användas istället. | ||
<br> | <br> | ||
<br>Det är möjligt att inkrementera en icke-numerisk sträng i PHP. Strängen måste vara en alfanumerisk ASCII-sträng. | <br>Det är möjligt att inkrementera en icke-numerisk sträng i PHP. Strängen måste vara en alfanumerisk ASCII-sträng. När man når bokstaven Z överförs inkrementet till värdet till vänster. Till exempel, $a = 'Z'; $a++; blir $a till 'AA'. | ||
<br> | <br> | ||
<br>'''Exempel #1 PERL-stränginkrement exempel:''' | |||
<br><code> | <br><code> | ||
<?php | <br><?php | ||
<br>echo '== | <br>echo '== Alfabetska strängar ==' . PHP_EOL; | ||
<br>$s = 'W'; | <br>$s = 'W'; | ||
<br>for ($n=0; $n<6; $n++) { | <br>for ($n=0; $n<6; $n++) { | ||
Rad 97: | Rad 98: | ||
<br></code> | <br></code> | ||
<br> | <br> | ||
<br> | <br>'''Utskrift från exemplet:''' | ||
<br>; | <br>;Alfabetska strängar: | ||
<br>:X | <br>:X | ||
<br>:Y | <br>:Y | ||
Rad 118: | Rad 119: | ||
<br>:A13 | <br>:A13 | ||
<br>:A14 | <br>:A14 | ||
<br> | |||
=== Varning === | |||
<br>* Om den alfanumeriska strängen kan tolkas som en numerisk sträng kommer den att omvandlas till en int eller float. Detta är särskilt ett problem med strängar som ser ut som flyttal skrivna i exponentiell notation. Funktionen str_increment() lider inte av dessa implicita typomvandlingar. | |||
<br> | |||
<br>'''Exempel #2 Alfanumerisk sträng omvandlad till float:''' | |||
<br><code> | |||
<br><?php | |||
<br>$s = "5d9"; | |||
<br>var_dump(++$s); | |||
<br>var_dump(++$s); | |||
<br>?> | |||
<br></code> | |||
<br> | |||
<br>;Utskrift från exemplet: | |||
<br>:string(3) "5e0" | |||
<br>:float(6) | |||
<br> | <br> |
Versionen från 16 augusti 2024 kl. 05.29
PHP Inkrementerings-/Dekrementeringsoperatorer
PHP stöder pre- och post-inkrement och dekrementoperatorer. Dessa unära operatorer tillåter att inkrementera eller dekrementera värdet med ett.
Inkrement-/dekrementoperatorer
Exempel | Namn | Effekt |
---|---|---|
++$a | Pre-inkrement | Ökar $a med ett, sedan returneras $a. |
$a++ | Post-inkrement | Returnerar $a, sedan ökas $a med ett. |
--$a | Pre-dekrement | Minskar $a med ett, sedan returneras $a. |
$a-- | Post-dekrement | Returnerar $a, sedan minskas $a med ett. |
Exempelskript:
<?php
echo 'Post-inkrement:', PHP_EOL;
$a = 5;
var_dump($a++);
var_dump($a);
echo 'Pre-inkrement:', PHP_EOL;
$a = 5;
var_dump(++$a);
var_dump($a);
echo 'Post-dekrement:', PHP_EOL;
$a = 5;
var_dump($a--);
var_dump($a);
echo 'Pre-dekrement:', PHP_EOL;
$a = 5;
var_dump(--$a);
var_dump($a);
?>
Utskrift från exemplet:
;Post-inkrement:
:int(5)
:int(6)
;Pre-inkrement:
:int(6)
:int(6)
;Post-dekrement:
:int(5)
:int(4)
;Pre-dekrement:
:int(4)
:int(4)
Varning
* Inkrement- och dekrementoperatorerna har ingen effekt på värden av typen bool. Ett 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. Ett 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. Ett 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. När man når bokstaven Z överförs inkrementet till värdet till vänster. Till exempel, $a = 'Z'; $a++; blir $a till 'AA'.
Exempel #1 PERL-stränginkrement exempel:
<?php
echo '== Alfabetska 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;
}
?>
Utskrift från exemplet:
;Alfabetska strängar:
:X
:Y
:Z
:AA
:AB
:AC
;Alfanumeriska strängar:
:A9
:B0
:B1
:B2
:B3
:B4
:A09
:A10
:A11
:A12
:A13
:A14
Varning
* Om den alfanumeriska strängen kan tolkas som en numerisk sträng kommer den att omvandlas till en int eller float. Detta är särskilt ett problem med strängar som ser ut som flyttal skrivna i exponentiell notation. Funktionen str_increment() lider inte av dessa implicita typomvandlingar.
Exempel #2 Alfanumerisk sträng omvandlad till float:
<?php
$s = "5d9";
var_dump(++$s);
var_dump(++$s);
?>
;Utskrift från exemplet:
:string(3) "5e0"
:float(6)