Inkrement och dekrement: Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
 
(5 mellanliggande sidversioner av samma användare visas inte)
Rad 1: Rad 1:
== PHP Inkrementerings-/Dekrementeringsoperatorer ==
== 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.
<br>
<br>
<br>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 ===
=== Inkrement-/dekrementoperatorer ===
{| class="wikitable"
{| class="wikitable"
<br>! Exempel
! Exempel
<br>! Namn
! Namn
<br>! Effekt
! Effekt
<br>|-
|-
<br>| ++$a
| ++$a
<br>| För-inkrement
| Pre-inkrement
<br>| Ökar $a med ett, returnerar sedan $a.
| Ökar $a med ett, sedan returneras $a.
<br>|-
|-
<br>| $a++
| $a++
<br>| Efterinkrement
| Post-inkrement
<br>| Returnerar $a, ökar sedan $a med ett.
| Returnerar $a, sedan ökas $a med ett.
<br>|-
|-
<br>| --$a
| --$a
<br>| För-dekrement
| Pre-dekrement
<br>| Minskar $a med ett, returnerar sedan $a.
| Minskar $a med ett, sedan returneras $a.
<br>|-
|-
<br>| $a--
| $a--
<br>| Efter-dekrement
| Post-dekrement
<br>| Returnerar $a, minskar sedan $a med ett.
| Returnerar $a, sedan minskas $a med ett.
<br>|}
|}
<br>
<br>
<br>'''Exempelskript:'''
'''Exempelskript:'''
<br><code>
<br><code>
<br><?php
<br><?php
<br>echo 'Efter-inkrement:', PHP_EOL;
<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 'För-inkrement:', PHP_EOL;
<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 'Efter-dekrement:', PHP_EOL;
<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 'För-dekrement:', PHP_EOL;
<br>echo 'Pre-dekrement:', PHP_EOL;
<br>$a = 5;
<br>$a = 5;
<br>var_dump(--$a);
<br>var_dump(--$a);
Rad 52: Rad 51:
<br>
<br>
<br>'''Utskrift från exemplet:'''
<br>'''Utskrift från exemplet:'''
<br>;Efter-inkrement:
<br>;Post-inkrement:
<br>:int(5)
<br>:int(5)
<br>:int(6)
<br>:int(6)
<br>;För-inkrement:
<br>;Pre-inkrement:
<br>:int(6)
<br>:int(6)
<br>:int(6)
<br>:int(6)
<br>;Efter-dekrement:
<br>;Post-dekrement:
<br>:int(5)
<br>:int(5)
<br>:int(4)
<br>:int(4)
<br>;För-dekrement:
<br>;Pre-dekrement:
<br>:int(4)
<br>:int(4)
<br>:int(4)
<br>:int(4)
=== Varningar ===
<br>
<br>* 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.
=== Varning ===
<br>* 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.
<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å 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.
<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>
<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.
Denna funktion är mjukt avskaffad från och med PHP 8.3.0. Funktionen '''str_increment()''' bör användas istället.
<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. 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>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'.
 
<br>
'''Exempel #1 PERL-stränginkrement exempel:'''
<br><code>
<code>
<?php
<br><?php
<br>echo '== Alfabetiska strängar ==' . PHP_EOL;
<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 97:
<br></code>
<br></code>
<br>
<br>
<br>=== Exempel på utskrift ===
<br>'''Utskrift från exemplet:'''
<br>;Alfabetiska strängar:
<br>;Alfabetska strängar:
<br>:X
<br>:X
<br>:Y
<br>:Y
Rad 119: Rad 119:
<br>:A14
<br>:A14
<br>
<br>
=== 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.
<br>
'''Exempel #2 Alfanumerisk sträng omvandlad till float:'''
<code>
<?php
$s = "5d9";
<br>var_dump(++$s);
<br>var_dump(++$s);
?>
</code>
;Utskrift från exemplet:
<br>:string(3) "5e0"
<br>:float(6)
<br>
[[PHP]]<br>
[[Språkreferens]]<br>
[[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