Inkrement och dekrement: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
 
(2 mellanliggande sidversioner av samma användare visas inte)
Rad 1: Rad 1:
== PHP Inkrementerings-/Dekrementeringsoperatorer ==
== PHP Inkrementerings-/Dekrementeringsoperatorer ==
<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>PHP stöder pre- och post-inkrement och dekrementoperatorer. Dessa unära operatorer tillåter att inkrementera eller dekrementera värdet med ett.
<br>
<br>
=== Inkrement-/dekrementoperatorer ===
=== Inkrement-/dekrementoperatorer ===
Rad 70: Rad 69:
<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>* 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>
<br>
== PERL-stränginkrementfunktion ==
== PERL-stränginkrementfunktion ==
<br>
<br>
Rad 129: Rad 129:
<br>var_dump(++$s);
<br>var_dump(++$s);
<br>var_dump(++$s);
<br>var_dump(++$s);
<br>?>
?>
<br></code>
</code>
<br>
 
<br>;Utskrift från exemplet:
;Utskrift från exemplet:
<br>:string(3) "5e0"
<br>:string(3) "5e0"
<br>:float(6)
<br>:float(6)
<br>
<br>
[[PHP]]
 
[[Språkreferens]]
[[PHP]]<br>
[[Språkreferens]]<br>
[[Kategori:Php]]
[[Kategori:Php]]

Nuvarande version från 16 augusti 2024 kl. 05.33

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)

PHP
Språkreferens