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.
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
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.
&
Bitvise operatorer eller Referencer
=&
Referencer
???
Null Coalesce Operator (siden PHP 7)
?string
?int
?array
?bool
?float
Deklaration af returtypen kan annulleres (siden PHP 7.1)
=>
Arrays
<<<<<
Heredoc eller Nowdoc
<=>
Sammenligningsoperatorer (siden PHP 7.0)
+=
og -=
Tildelingsoperatorer
,
Variabeldeklarationer` `
`` Udførelsesoperator
<?=
Korte åbne tags
[]
Arrays (kort syntaks siden PHP 5.4)
$var = []
tomt array] (https://stackoverflow.com/questions/4271874)...
Udpakning af argumenter (siden PHP 5.6)**
Eksponering (siden PHP 5.6)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";
}
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:
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)
&
$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.
$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.
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"