Reference - Hvad betyder dette symbol i PHP?

Hvad er det her?

Dette er en samling af spørgsmål, som dukker op af og til om syntaks i PHP. Dette er også en fællesskabswiki, så alle er velkomne til at deltage i vedligeholdelsen af denne liste.

Hvorfor er dette?

Det plejede at være svært at finde spørgsmål om operatorer og andre syntaksetokens.¹ Hovedidéen er at have links til eksisterende spørgsmål på Stack Overflow, så det er nemmere for os at henvise til dem, og ikke at kopiere indhold fra PHP-manualen over. Bemærk: Siden januar 2013 har Stack Overflow understøttet specialtegn. Du skal blot omgive søgetermerne med anførselstegn, f.eks. [php] "==" vs "==="2

Hvad skal jeg gøre her?

Hvis du er blevet henvist hertil af nogen, fordi du har stillet et sådant spørgsmål, kan du finde den særlige syntaks nedenfor. De linkede sider til PHP-manualen sammen med de linkede spørgsmål vil sandsynligvis besvare dit spørgsmål derefter. Hvis det er tilfældet, opfordres du til at upvote svaret. Denne liste er ikke ment som en erstatning for den hjælp, som andre har givet.

Listen

Hvis dit særlige token ikke er anført nedenfor, kan du måske finde det i List of Parser Tokens.

& Bitvise operatorer eller Referencer

Løsning

Operatorer til forøgelse/formindskelse

++ inkrementeringsoperator

-- dekrementeringsoperator

Example    Name              Effect
---------------------------------------------------------------------
++$a       Pre-increment     Increments $a by one, then returns $a.
$a++       Post-increment    Returns $a, then increments $a by one.
--$a       Pre-decrement     Decrements $a by one, then returns $a.
$a--       Post-decrement    Returns $a, then decrements $a by one.

Disse kan gå før eller efter variablen.

Hvis de sættes før variablen, foretages forhøjelsen/nedsættelsen af variablen først og derefter returneres resultatet. Hvis de sættes efter variablen, returneres variablen først, hvorefter der foretages en inkrementering/decrementering af variablen.

F.eks:

$apples = 10;
for ($i = 0; $i < 10; ++$i) {
    echo 'I have ' . $apples-- . " apples. I just ate one.\n";
}

Levende eksempel

I ovenstående tilfælde anvendes ++$i, da det er hurtigere. $i++ ville give de samme resultater.

Pre-increment er en smule hurtigere, fordi den virkelig øger variablen og derefter 'returnerer' resultatet. Post-increment opretter en særlig variabel, kopierer værdien af den første variabel dertil og erstatter først efter at den første variabel er brugt, dens værdi med den anden variabel.

Du skal dog bruge $apples--, da du først vil vise det aktuelle antal æbler, og næst vil du trække en fra det.

Du kan også inkremere bogstaver i PHP:

$i = "a";
while ($i < "c") {
    echo $i++;
}

Når z er nået, er aa den næste, og så videre.

Bemærk, at karaktervariabler kan øges, men ikke sænkes, og selv i dette tilfælde understøttes kun almindelige ASCII-tegn (a-z og A-Z).


Stack Overflow-indlæg:

Kommentarer (12)

Bitvis operatør

Hvad er en bit? En bit er en repræsentation af 1 eller 0. I princippet OFF(0) og ON(1).

Hvad er en byte? En byte består af 8 bits, og den højeste værdi af en byte er 255, hvilket vil sige, at alle bits er sat. Vi vil se på, hvorfor den højeste værdi for en byte er 255.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------

Denne repræsentation af 1 byte

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255 (1 byte)

Et par eksempler til bedre forståelse

Operatoren "AND": &

$a =  9;
$b = 10;
echo $a & $b;

Dette ville give tallet 8. Hvorfor? Lad os se det ved hjælp af vores tabeleksempel.

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      &     |   0|  0|  0|  0| 1| 0| 0| 0|
------------------------------------------- 

Så du kan se i tabellen, at den eneste bit, de deler sammen, er den 8 bit.

Det andet eksempel

$a =  36;
$b = 103;
echo $a & $b; // This would output the number 36.
$a = 00100100
$b = 01100111

De to delte bits er 32 og 4, og når de lægges sammen giver det 36.

Operatoren "Or": |

$a =  9;
$b = 10;
echo $a | $b;

Dette ville give nummer 11. Hvorfor?

-------------------------------------------
|      1 Byte ( 8 bits )                  |
-------------------------------------------
|Place Value | 128| 64| 32| 16| 8| 4| 2| 1|     
-------------------------------------------
|      $a    |   0|  0|  0|  0| 1| 0| 0| 1|    
-------------------------------------------
|      $b    |   0|  0|  0|  0| 1| 0| 1| 0|
------------------------------------------- 
|      |     |   0|  0|  0|  0| 1| 0| 1| 1|
-------------------------------------------

Du vil bemærke, at vi har 3 bits indstillet i kolonnerne 8, 2 og 1. Læg dem sammen: 8+2+1=11.

Kommentarer (4)
Syntax    Name             Description

x == y    Equality         True if x and y have the same key/value pairs
x != y    Inequality       True if x is not equal to y
x === y   Identity         True if x and y have the same key/value pairs
                            in the same order and of the same types
x !== y   Non-identity     True if x is not identical to y
++ x      Pre-increment    Increments x by one, then returns x
x ++      Post-increment   Returns x, then increments x by one
-- x      Pre-decrement    Decrements x by one, then returns x
x --      Post-decrement   Returns x, then decrements x by one
x and y   And              True if both x and y are true x=6 y=3
                           (x < 10 and y > 1) returns true 
x && y    And              True if both x and y are true x=6 y=3
                           (x < 10 && y > 1) returns true
a . b     Concatenation    Concatenate two strings: "Hi" . "Ha"
Kommentarer (0)