Expressies
zijn
de
belangrijkste
bouwstenen
van
PHP
.
In
PHP
is
bijna
alles
wat
je
schrijft
een
expressie
.
De
eenvoudigste
en
meest
accurate
manier
om
een
expressie
te
defineren
is
"
alles
dat
een
waarde
heeft
"
.
De
basis
vorm
van
expressies
zijn
constanten
en
variabelen
.
Als
je
typt
"
$a
=
5"
,
dan
geef
je
$a
de
waarde
'5'
.
'5'
,
heeft
als
waarde
(natuulijk
)
5
,
of
met
andere
woorden
'5
'
is
een
expressie
met
de
waarde
5
(in
dit
voorbeeld
,
'5
'
is
een
integer
constante
)
.
Na
deze
toekenning
verwacht
je
dat
de
waarde
van
$a
ook
5
zal
zijn
,
en
als
je
nu
zou
schrijven
$b
=
$a
,
dan
verwacht
je
dat
dit
precies
hetzelfde
zal
doen
als
$b
=
5
.
Met
andere
woorden
,
$a
is
ook
een
expressie
met
de
waarde
5
.
Als
alles
werkt
zoals
het
hoort
,
zal
$b
dus
ook
de
waarde
5
krijgen
.
Wat
complexere
voorbeelden
van
expressies
zijn
functies
.
Kijk
bijvoorbeeld
naar
de
volgende
functie
:
Aangenomen
dat
je
bekend
met
met
het
concept
'
functiens
'
(als
je
dit
niet
bent
kijk
dan
in
het
hoofdstukk
over
functies)
,
verwacht
je
dat
het
typen
van
$c
=
foo(
)
in
essentie
precies
hetzelfde
is
als
het
typen
van
$c
=
5
,
en
dit
is
ook
waar
.
Functies
zijn
expressies
met
de
waarde
die
gelijk
is
aan
de
return
waarde
van
de
functie
.
Omdat
foo(
)
5
teruggeeft
,
is
de
waarde
van
de
expressie
'foo()
'
5
.
Normaal
gesproken
retourneren
functies
geen
statische
waarden
natuurlijk
,
maar
berekenen
ze
iets
.
Natuurlijk
kunnen
waarden
in
PHP
ook
iets
anders
zijn
dan
integers
.
PHP
ondersteund
drie
scalaire
types
:
integers
,
floating
points
en
strings
.
(
Scalaire
types
hebben
waardes
die
je
niet
in
kleinere
stukken
kunt
breken
,
dit
in
tegenstelling
tot
bijvoorbeeld
array's
)
.
PHP
ondersteund
ook
twee
niet
scalaire
types
:
array
'
s
en
objecten
Al
deze
types
kunnen
worden
toegekend
aan
variabelen
of
worden
teruggegeven
uit
functies
.
Tot
zover
zullen
de
gebruikers
van
PHP
/
FI
2
geen
verschil
merken
,
maar
PHP
gaat
veel
verder
met
expressies
,
op
dezelfde
manier
als
veel
andere
talen
doen
.
PHP
is
een
expressie-georiënteerde
taal
waarbij
bijna
alles
een
expressie
is
.
Neem
bijvoorbeeld
het
voorbeeld
dat
je
eerder
hebt
gezien
:
'
$a
=
5
'
.
Het
is
eenvoudig
te
zien
dat
het
hier
om
twee
waardes
gaat
,
de
waarde
van
de
integer
constante
'
5
'
en
de
waarde
van
$a
waaraan
5
wordt
toegekend
.
Maar
in
werkelijkheid
is
er
nog
een
waarde
,
en
deze
waarde
is
de
waarde
van
de
toekenning
zelf
.
De
toekenning
zelf
evalueert
tot
de
toegekende
waarde
,
in
dit
geval
5
.
Dit
betekend
dat
'
$a
=
5
'
,
terzijde
gelegd
wat
het
doet
,
een
expressies
is
met
de
waarde
5
.
Dus
als
je
zou
schrijven
:
'
$b
=
($a
=
5)
'
gebeurd
er
precies
als
je
zou
schrijven
:
'$a
=
5
;
$b
=
5
;
'
(een
puntkomma
markeerd
het
einde
van
een
statement
)
.
Omdat
toekenningen
worden
geparsed
van
rechts
naar
links
,
zou
je
ook
kunnen
schrijven
'
$b
=
$a
=
5
'
.
Een
ander
goed
voorbeeld
van
expressie
oriëntatie
zijn
pre
-
en
post-increment
en
decrement
.
Gebruikers
van
PHP
/
FI
2
en
vele
andere
talen
zullen
wellicht
de
notatie
variabele+
+
en
variable-
-
kunnen
.
Dit
zijn
de
increment
en
decrement
operaties
.
In
PHP
/
FI
2
,
heeft
het
statement
'
$a++
'
geen
waarde
(het
is
geen
expressie
)
,
en
daarom
kun
je
het
niet
toewijzen
of
gebruiken
op
een
andere
manier
.
PHP
voegt
increment
/
decrement
toe
aan
de
expressies
,
net
zoals
dit
in
C
is
.
In
PHP
zijn
er
twee
types
of
increment
,
pre-increment
en
post-increment
.
Zowel
pre-increment
en
post-increment
verhogen
de
variabele
,
en
het
effect
op
de
variabele
is
identiek
.
Het
verschil
ligt
hem
aan
de
waarde
van
de
totale
increment
expressie
.
Pre-increment
,
dat
wordt
geschreven
als
'
++$variable'
,
evaluaeerd
tot
de
opgehoogde
waarde
(PHP
increments
de
variabele
voordat
de
waarde
wordt
gelezen
,
vandaar
de
naam
'pre-increment'
)
.
Post-increment
,
dat
wordt
geschreven
als
'
$variable++
'
evalueert
tot
de
oorspronkelijke
waarde
van
$variable
,
voordat
deze
is
opgehoogd
(PHP
increments
de
variable
nadat
deze
is
uitgelezen
,
vandaar
de
naam
'post-increment'
)
.
Andere
normale
expressies
zijn
vergelijkings
expressies
.
Deze
expressies
evalueren
tot
0
of
1
(
dit
betekent
respectievelijk
FALSE
en
TRUE
)
.
PHP
ondersteund
(
groter
dan)
,
=
(groter
dan
of
gelijk
aan)
,
==
(gelijk)
,
!=
(niet
gelijk)
,
(kleiner
dan
)
en
=
(kleinder
dan
of
gelijk
aan
)
.
Deze
expressies
worden
meestal
gebruikt
binnen
conditionele
statements
,
zoals
if
statements
.
Het
laatste
type
expressies
waar
we
het
over
zullen
hebben
zijn
gecombineerde
operatie-toewijzings
expressies
.
Je
weet
al
dat
als
je
$a
wilt
verminderen
met
1
,
je
'
$a++
'
of
'++$a
'
kunt
schrijven
.
Maar
wat
als
je
er
meer
wailt
afhalen
,
bijvoorbeeld
3
?
Je
zou
natuurlijk
vaker
'
$a++
'
kunnen
scjrijven
,
maar
dit
is
natuurlijk
niet
efficië
of
handig
.
Veel
vaker
wordt
er
geschreven
'
$a
=
$a
+
3'
.
'$a
+
3
'
evaluaeerd
tot
de
waarde
van
$a
plus
3
,
en
wordt
dan
weer
teruggewezen
aan
$a
,
dit
resulteert
in
een
nieuwe
waarde
van
$a
die
3
onder
d
ehuidige
waarde
ligt
.
In
PHP
,
en
in
vele
andere
talen
waaronder
C
,
kun
je
dit
korter
schrijven
,
zodat
het
makkelijker
leest
en
sneller
te
begrijpen
is
.
Het
ophogen
van
de
huidige
waarde
van
$a
met
3
kan
worden
geschreven
als
'
$a
+=
3
'
.
Dit
betekend
"
neem
de
waarde
van
$a
,
tel
er
3
bij
op
,
en
ken
het
weer
toe
aan
$a
"
.
Als
derde
voordeel
(
naast
korter
en
makkelijker
te
lezen
,
zal
het
statement
ook
sneller
worden
uitgevoerd
.
De
waarde
van
'
$a
+=
3
'
,
is
net
zoals
de
waarde
van
een
normale
toekenning
,
de
toegekende
waarde
.
Begrijp
goed
dat
dit
NIET
3
is
,
maar
de
gecombineerde
waarde
van
$a
plus
3
(
dit
is
namelijk
de
waarde
die
wordt
toegekend
aan
$a
)
.
Elke
binairy
operator
kan
worden
gebruikt
voor
deze
operatie-toekennings
mode
,
bijvoorbeeld
'
$a
-=
5
'
(verminder
de
waarde
van
$a
met
5)
,
'$b
*=
7
'
(vermenigvuldig
de
waarde
van
$b
met
7
)
,
enz
.
Er
is
nog
een
expressie
die
vreemd
zal
lijken
als
je
het
nog
niet
hebt
gezien
in
andere
talen
,
namelijk
ternaire
conditionele
operator
:
Als de waarde van de eerste sub-expressie waar is (niet-nul), dan
worde de tweede sub-expressie geevalueerd, en dit resultaat zijn
van de conditionele expressie. Anders worde de derde
sub-expressie geevalueerd, en wordt dit de waarde van de
operatie.
Het
volgende
voorbeeld
helpt
je
met
het
beter
begrijpen
van
pre
-
en
post-increment
en
expressies
in
het
algemeen
:
Aan
het
begin
van
dit
hoofdstuk
vertelden
we
dat
we
verschillende
statement
types
zouden
beschrijven
,
en
zoals
is
gebleken
kunnen
expressies
statements
zijn
.
Maar
niet
iederen
expressie
is
een
statement
.
Een
statement
heeft
de
vorm
'
expressie
'
'
;
'
dat
is
een
expressie
gevolgt
door
een
punt-komma
.
In
'
$b=$a=5
;
'
is
$a=5
een
geldige
expressie
,
maar
niet
een
statement
.
'$b=$a=5
;
'
is
wel
een
geldig
statement
in
dit
voorbeeld
.
Er
is
nog
een
laatste
ding
waar
we
het
over
willende
hebben
,
en
dat
is
de
waarheids-waarde
van
expressies
.
In
veel
gevallen
,
vaak
in
loops
en
andere
conditionele
dingen
,
ben
je
niet
geïnteresseerd
in
een
specifieke
waarde
,
maar
alleen
of
deze
waarde
TRUE
of
FALSE
betekent
.
(
PHP
heeft
geen
appart
boolean
type
)
.
De
waarheidswaarde
van
expressies
in
PHP
is
hetzelfde
als
dat
in
Perl
.
Allen
numerieke
niet-nul
waarden
zijn
TRUE
,
0
is
FALSE
.
Let
erop
negatieve
waardes
ook
niet-nul
zijn
en
daarom
de
waarheids-waarde
TRUE
is!
.
De
lege
string
en
de
string
"
0
"
zijn
ook
FALSE
;
alle
andere
strings
zijn
TRUE
.
In
het
geval
van
niet
scalaire
waarden
(
array's
en
objecten
)
is
de
waardheids
-
waarde
FALSE
als
deze
geen
elementen
bevat
,
anders
evalueren
ze
tot
TRUE
.
PHP
heeft
een
volledige
en
krachtige
implementatie
van
expressie
,
en
om
dit
te
documenteren
gaat
geheel
buiten
de
scope
van
deze
handleiding
.
De
bovenstaande
voorbeelden
zouden
je
een
goed
idee
moeten
geen
over
wat
expressies
zijn
en
hoe
je
ze
goed
kan
construeren
.
In
de
rest
van
deze
handleiding
zullen
we
expr
schrijven
om
een
geldige
PHP
expressie
aan
te
geven
.