Ausdrücke
(
Expressions
)
sind
die
wichtigsten
Bausteine
von
PHP
.
In
PHP
ist
fast
alles
,
was
geschrieben
wird
,
ein
Ausdruck
.
Die
einfachste
,
aber
auch
zutreffenste
Definition
für
einen
Ausdruck
ist
"
alles
,
was
einen
Wert
hat
"
.
Die
grundlegendste
Formen
von
Ausdrücken
sind
Konstanten
und
Variablen
.
Wenn
man
"
$a
=
5
"
schreibt
,
weist
man
$a
den
Ausdruck
´5´
zu
.
´5´
hat
offensichtlich
den
Wert
5
.
Anders
ausgedrückt
:
´5´
ist
ein
Ausdruck
mit
dem
Wert
5
(
in
diesem
Fall
ist
´5´
eine
Integer-Konstante
)
.
Nach
dieser
Zuweisung
würde
man
erwarten
,
dass
der
Wert
von
$a
nun
ebenfalls
5
ist
,
wenn
man
also
$b
=
$a
schreibt
,
sollte
dasselbe
dabei
herauskommen
,
als
hätte
man
$b
=
5
geschrieben
.
Anders
ausgedrückt
:
$a
wäre
ebenfalls
ein
Ausdruck
mit
dem
Wert
5
.
Wenn
alles
richtig
funktioniert
,
wird
genau
das
passieren
.
Etwas
kompliziertere
Beispiele
für
Ausdrücke
sind
Funktionen
:
Angenommen
,
Sie
sind
mit
dem
Konzept
von
Funktionen
vertraut
(
wenn
Sie
es
nicht
sind
,
lesen
Sie
das
Kapitel
über
Funktionen)
,
dann
würden
Sie
annehmen
,
dass
die
Eingabe
von
$c
=
foo(
)
grundsätzlich
daselbe
bedeutet
,
als
würde
man
schreiben
$c
=
5
,und
genau
das
trifft
zu
.
Funktionen
sind
Ausdrücke
mit
dem
Wert
ihres
Rückgabewertes
.
Da
foo(
)
den
Wert
5
zurückgibt
,
ist
der
Wert
des
Ausdruckes
´foo(
)´
5
.
Normalerweise
geben
Funktionen
nicht
einfach
einen
statischen
Wert
zurück
,
sondern
berechnen
irgendetwas
.
Natürlich
müssen
Werte
in
PHP
keine
Integer-Zahlen
sein
,
und
oft
sind
sie
es
auch
nicht
.
PHP
unterstützt
drei
skalare
Datentypen
:
integer
values
(
Integer-Zahlen),floating
point
values
(Fließkommazahlen
)
und
string
values
(Zeichenketten)
.
(Skalare
sind
Datentypen
,
die
man
nicht
in
kleinere
Stücke
´brechen´
kann
,
im
Gegensatz
zu
Arrays
)
.
PHP
unsterstützt
auch
zwei
zusammengesetzte
(
nicht-skalare
)
Datentypen
:
Arrays
und
Objekte
.
Jeder
dieser
Datentypen
kann
Variablen
zugewiesen
und
von
Funktionen
zurückgegeben
werden
.
Bis
hierhin
sollten
Benutzer
von
PHP
/
FI
2
keine
Veränderung
bemerkt
haben
.
PHP
fasst
den
Begriff
´Ausdruck´
aber
noch
viel
weiter
,
wie
es
auch
andere
Programmiersprachen
tun
.
PHP
ist
in
dem
Sinne
eine
ausdrucksoriente
Sprache
,
dass
fast
alles
ein
Ausdruck
ist
.
Zurück
zu
dem
Beispiel
,
mit
dem
wir
uns
schon
beschäftigt
haben
:
´$a
=
5´
.
Es
ist
einfach
zu
erkennen
,
dass
hier
zwei
Werte
enthalten
sind
:
Der
Wert
der
Integer-Konstanten
´5´
und
der
Wert
von
$a
,
der
auf
5
geändert
wird
.
In
Wirklichkeit
ist
aber
noch
ein
zusätzlicher
Wert
enthalten
,
nämlich
der
Wert
der
Zuweisung
selbst
.
Die
Zuweisung
selbst
enthält
den
zugewiesenen
Wert
,
in
diesem
Fall
5
.
In
der
Praxis
bedeutet
dies
,
dass
´$a
=
5´
,
egal
was
es
tut
,
immer
einen
Ausdruck
mit
dem
Wert
5
darstellt
.
Folglich
ist
´$b
=
(
$a
=
5)´
gleichbedeutend
mit
´$a
=
5
;
$b
=
5;´
(ein
Semikolon
markiert
das
Ende
einer
Anweisung
)
.
Da
Wertzuweisungen
von
rechts
nach
links
geparst
werden
,
kann
man
auch
´$b
=
$a
=
5´
schreiben
.
Ein
anderes
gutes
Beispiel
für
die
Ausdrucksorientierung
von
PHP
sind
Prä
-
und
Post-Inkrement
sowie
die
entsprechenden
Dekremente
.
Benutzer
von
PHP
/
FI
2
und
vielen
anderen
Sprachen
sind
vermutlich
mit
den
Notationen
´variable++´
und
´variable--´
vertraut
.
Dies
sind
Inkrement
-
und
Dekrement-Operatoren
.
IN
PHP
/
FI
2
hat
das
Statement
´$a++´
keinen
Wert
(
es
ist
kein
Ausdruck
)
und
daher
kann
man
es
nicht
als
Wert
zuweisen
oder
in
irgendeiner
Weise
benutzen
.
PHP
erweitert
die
Eigenschaften
von
Dekrement
und
Inkrement
,
indem
es
die
beiden
ebenfalls
zu
Ausdrücken
macht
.
In
PHP
gibt
es
,
wie
in
C
,
zwei
Arten
von
Inkrementen
-
Prä-Inkrement
und
Post-Inkrement
.
Grundsätzlich
erhöhen
sowohl
Prä
-
als
auch
Post-Inkrement
den
Wert
der
Variable
,
und
der
Effekt
auf
die
Variable
ist
derselbe
.
Der
Unterschied
ist
der
Wert
des
Inkrement-Ausdruckes
.
Das
Prä-Inkrement
,
das
´++$variable´
geschrieben
wird
,
enthält
als
Wert
den
Wert
der
erhöhten
Variabe
(
PHP
erhöht
den
Wert
der
Variable
,
bevor
es
ihren
Wert
ausliest
,
daher
der
Name
´PRÄ-Inkrement´
)
.
Das
Post-Inkrement
,
das
´$variable++´
geschrieben
wird
,
enthält
dagegen
den
ursprünglichen
Wert
der
Variablen
vor
der
Erhöhung
(
PHP
erhöht
den
Wert
der
Variablen
,
nachdem
es
ihren
Wert
ausgelesen
hat
,
daher
der
Name
´POST-Inkrement´
)
.
Ein
sehr
gebräuchlicher
Typ
von
Ausdrücken
sind
Vergleichsausdrücke
.
Diese
Ausdrücke
geben
entweder
0
(
=FALSCH
)
oder
1
(=WAHR
)
zurück
.
PHP
unterstützt
(
größer)
,
=
(größer
oder
gleich)
,
==
(gleich)
,
!=
(ungleich)
,
(kleiner)
,
und
=
(kleiner
oder
gleich
)
.
Diese
Ausdrücke
werden
meistens
in
bedingten
Anweisungen
,
wie
z
.
B
.
in
if
-Anweisungen
,
verwendet
.
Im
letzten
Beispiel
für
Ausdrücke
befassen
wir
uns
mit
kombinierten
Zuweisungs
-
und
Operator-Ausdrücken
.
Wir
haben
schon
gezeigt
,
wie
man
den
Wert
von
$a
um
1
erhöht
,
nämlich
indem
man
einfach
´$a++´
oder
´++$a´
schreibt
.
Aber
was
tut
man
,
wenn
man
den
Wert
um
mehr
als
eins
erhöhen
will
,
z
.
B
.
um
3
?
Man
könnte
mehrer
Male
´$a++´
schreiben
,
aber
das
ist
offensichtlich
weder
effizient
noch
sehr
komfortabel
.
Viel
üblicher
ist
es
,
einfach
´$a
=
$a
+
3´
zu
schreiben
.
´$a
+
3´
gibt
den
Wert
von
$a
plus
3
zurück
,
dieser
wird
wieder
$a
zugewiesen
,
was
dazu
führt
,
dass
$a
nun
um
3
erhöht
wurde
.
In
PHP
-
wie
in
einigen
anderen
Programmiersprachen
,
z
.
B
.
in
C
-
kann
man
dies
aber
noch
kürzer
schreiben
,
was
mit
der
Zeit
klarer
wird
und
auch
einfacher
zu
verstehen
ist
.
Um
3
zu
dem
aktuellen
Wert
hinzuzufügen
,
schreibt
man
´$a
+=
3´
.
Das
bedeutet
exakt
:
"
Nimm´
den
Wert
von
$a
,
addiere
3
hinzu
und
weise
$a
den
entstandenen
Wert
zu
"
.
Zusätzlich
dazu
,
dass
diese
Schreibweise
kürzer
und
klarer
ist
,
resultiert
sie
auch
in
einer
schnelleren
Ausführung
.
Der
Wert
von
´$a
+=
3´
ist
,
wie
der
Wert
einer
regulären
Zuweisung
,
der
zugewiesene
Wert
.
Es
ist
zu
beachten
,
dass
dieser
Wert
NICHT
3
,
sondern
dem
kombinierten
Wert
von
$a
plus
3
entspricht
(
Das
ist
der
Wert
,
der
$a
zugewiesen
wird
)
.
Jeder
Operator
,
der
zwei
Elemente
verbindet
,
kann
in
dieser
Schreibweise
verwendet
werden
,
z
.
B
.
´$a
-=
5´
(
vermindert
den
Wert
von
$a
um
5
)
oder
´$a
*=
7´
(multipliziert
den
Wert
von
$a
mit
7
und
weist
das
Ergebnis
$a
zu
)
,
usw
.
Es
gibt
einen
weiteren
Ausdruck
,
der
Ihnen
vielleicht
seltsam
vorkommt
,
wenn
Sie
ihn
bisher
noch
in
keiner
Programmiersprache
kennengelernt
haben
,
den
dreifach
konditionalen
Operator
:
Wenn der Wert des ersten Sub-Ausdruckes (hier: $eins) wahr ist
(d. h. nicht
NULL
), dann wird der Wert des zweiten Subausdrucks (hier: $zwei)
zurückgeben und ist das Ergebnis des konditionalen Ausdrucks.
Andernfalls (d. h. wenn der erste Ausdruck falsch ist), wird der
Wert des dritten Subausdruckes (hier: $drei) zurückgeben.
Das
folgende
Beispiel
sollte
das
Verständnis
von
Prä
-
und
Post-Inkrement
und
von
Ausdrücken
im
allgemeinen
erleichtern
:
Am
Anfang
dieses
Kapitels
hatten
wir
gesagt
,
wir
würden
die
verschiedenen
Arten
von
Anweisungen
beschreiben
und
,
wie
versprochen
,
Ausdrücke
können
Anweisungen
sein
.
Trotzdem
ist
nicht
jeder
Ausdruck
eine
Anweisung
.
In
diesem
Fall
hat
eine
Anweisung
die
Form
´Ausdr´
´
;
´
,
d
.
h
.
ein
Ausdruck
gefolgt
von
einem
Semikolon
.
In
´$b=$a=5;
´
ist
$a=5
ein
gültiger
Ausdruck
,
aber
für
sich
allein
keine
Anweisung
.
´$b=$a=5
;´
ist
jedoch
eine
gültige
Anweisung
.
Ein
letzter
Punkt
,
der
noch
zu
erwähnen
ist
,
ist
der
´wahr´-Wert
von
Ausdrücken
.
In
vielen
Fällen
,
hauptsächlich
in
bedingten
Anweisungen
und
Schleifen
,
ist
man
nicht
am
spezifischen
Wert
eines
Ausdrucks
interessiert
,
sondern
kümmert
sich
nur
darum
,
ob
er
WAHR
oder
FALSCH
bedeutet
(
PHP
hat
keinen
speziellen
boolean-Datentyp
)
.
Der
Wahrheitswert
eines
Ausdrucks
in
in
PHP
wird
ähnlich
bestimmt
wie
in
Perl
.
Jeder
numerische
Wert
,
der
nicht
NULL
ist
,
bedeutet
WAHR
,
NULL
bedeutet
FALSCH
.
Es
ist
zu
beachten
,
dass
negative
Werte
nicht
NULL
Es
ist
zu
beachten
,
dass
negative
Werte
nicht
NULL
sind
und
deshalb
als
WAHR
aufgefasst
werden
!
Eine
leere
Zeichenkette
und
die
Zeichenkette
"
0
"
sind
FALSCH
;
alle
anderen
Zeichenketten
sind
WAHR
.
Nicht-skalare
Datentypen
(
Arrays
und
Objekte
)
werden
als
FALSCH
betrachtet
,
wenn
sie
keine
Elemente
enthalten
,
anderfalls
geben
sie
WAHR
zurück
.
PHP
stellt
eine
vollständige
und
mächtige
Implementat
von
Ausdrücken
bereit
und
,
deren
vollständige
Dokumentation
den
Rahmen
dieses
Manuals
sprengen
würde
.
Die
obigen
Beispiele
sollten
Ihnen
einen
guten
Eindruck
darüber
verschaffen
,
was
Ausdrücke
sind
und
wie
man
nützliche
Ausdrücke
konstruieren
kann
.
Im
Rest
dieses
Manuals
werden
wir
ausdr
schreiben
,
um
ausdrücken
,
dass
an
dieser
Stelle
jeder
gültige
PHP-Ausdruck
stehen
kann
.