Wyrażenia
są
naważniejszymi
elementami
składowymi
PHP
.
W
PHP
prawie
wszystko
co
napiszesz
jest
wyrażeniem
.
Najprostszą
i
najdokładniejszą
definicją
wyrażenia
jest
"
wszystko
co
ma
wartość
"
.
Najbardziej
podstawową
formą
wyrażeń
są
stałe
i
zmienna
.
Jeśli
napiszesz
"
$a
=
5
"
przypisujesz
'5
'
do
'$a'
.
'5
'
ma
oczywiście
wartość
5
,
lub
innymi
słowy
'5
'
jest
wyrażeniem
o
wartości
5
(w
tym
przypadku
,
'5
'
jest
stałą
liczbą
całkowitą
)
.
Po
tym
przypisaniu
możesz
się
spodziwać
,
że
wartością
$a
jest
także
5
,
więc
jeśli
napiszesz
"
$b
=
$a
"
możesz
się
spodziewać
,
że
będzie
to
równoznaczne
z
napisaniem
"$b
=
5
"
.
Innymi
słowy
,
$a
jest
wyrażeniem
o
wartości
5
.
Jeśli
wszystko
działa
prawidłowo
,
to
wszystko
będzie
tak
jak
się
spodziewałeś
.
Trochę
bardziej
złożonymi
przykładami
wyrażeń
są
funkcje
.
Przyjrzyj
się
poniższej
funkcji
:
Zakładając
że
oswoiłeś
się
z
koncepcją
funkcji
(
jeśli
nie
,
przejrzyj
najpierw
rozdział
o
funkcjach)
,
możesz
założyć
,
że
napisanie
$c
=
foo(
)
jest
równoznaczne
z
napisaniem
$c
=
5
,
i
masz
racię
.
Funkcje
są
wyrażeniami
o
wartości
którą
zwracają
.
Ponieważ
foo(
)
zwraca
5
,
wartością
wyrażenia
'foo()
'
jest
5
.
Zazwyczaj
funkcje
nie
zwracają
statycznej
wartości
,
ale
coś
obliczają
.
Oczywiście
wartości
w
PHP
nie
muszą
być
liczbami
całkowitymi
,
i
bardzo
często
nie
są
nimi
.
PHP
obsługuje
3
skalarne
warotści
danych
:
wartości
całkowite
,
wartości
rzeczywiste
i
ciągi
znaków
(
string
)
(wartości
skalarne
to
takie
,
których
nie
możesz
'rozbić
'
na
mniejsze
kawałki
,
w
przeciwieństwie
do
np
.
tablic
)
.
PHP
obsługuje
także
dwa
złożone
(
nieskalarne
)
typy
danych
:
tablice
i
obiekty
.
Każdą
z
tych
wartości
można
przypisać
do
zmiennych
lub
może
być
zwrócona
przez
funkcję
.
Jak
narazie
,
użytkownicy
PHP
/
FI
2
nie
powinni
odczuć
żadnej
zmiany
.
Jednakże
PHP
rozwija
wyrażenia
znacznie
bardziej
,
podobnie
jak
wiele
innych
języków
programowania
.
PHP
jest
językiem
zorientowanym
na
wyrażenia
,
co
oznacza
że
prawie
wszystko
jest
wyrażeniem
.
Przyjrzyj
się
przykładowi
który
już
analizowaliśmy
,
'
$a
=
5
'
.
Łatwo
jest
zauważyć
,
że
są
tu
dwie
wartości
.
Wartość
stałej
całkowitej
'
5
'
,
a
także
wartość
$a
,
która
zostanie
zamieniona
na
5
.
Ale
tak
naprawdę
jest
tu
jeszcze
jedna
wartość
,
którą
jest
wartość
operacji
przypisania
.
Przypisanie
przyjmuje
wartość
przypisywanej
wartości
,
w
tym
przypadku
5
.
W
praktyce
oznacza
to
,
że
'
$a
=
5
'
,
niezależnie
co
to
robi
,
jest
wyrażeniem
o
wartości
5
.
Wynika
z
tego
,
że
napisanie
'
$b
=
($a
=
5)
'
jest
równoznaczne
napisaniu
'$a
=
5
;
$b
=
5
;
'
(średnik
oznacza
koniec
instrukcji
)
.
Ponieważ
przypisania
są
przetwarzane
od
prawej
do
lewej
,
możesz
także
napisać
'
$b
=
$a
=
5
'
.
Kolejnym
dobrym
przykładem
orientacji
wyrażeniowej
jest
pre
-
i
postinkrementacja
i
dekrementacja
.
Użytkownicy
PHP
/
FI
2
i
wielu
innych
języków
mogą
być
już
zaznajomieni
z
notacją
zmienna+
+
i
zmienna--
.
Są
to
operatory
inkrementacji
i
dekrementacji
.
W
PHP
/
FI
2
instrukcja
'
$a++
'
nie
ma
wartości
(nie
jest
wyrażeniem
)
,
więc
nie
możesz
jej
przypisać
lub
użyć
w
jakikolwiek
sposób
.
PHP
rozszerza
możliwości
inkrementacji
/
dekrementacji
robiąc
także
z
nich
wyrażenia
,
podobnie
jak
w
C
.
W
PHP
,
tak
jak
w
C
,
sa
dwa
typy
inkrementacji
:
preinkrementacja
i
postinkrementacja
.
I
pre
-
i
postinkrementacja
zwiększają
wartość
zmiannej
,
więc
efekt
w
stosunku
do
zmiennej
jest
taki
sam
.
Różnica
jest
w
wartości
wyrażenia
inkrementacji
.
Preinkrementacja
,
która
jest
oznaczana
jako
'
++$zmienna'
,
zwraca
zwiększoną
wartość
(PHP
zwiększa
zmienną
przed
odczytaniem
wartości
,
dlatego
nazywa
się
to
'pre-inkrementacją'
)
.
Postinkrementacja
,
która
jest
oznaczana
jako
'
$zmienna++'
,
zwraca
orginalną
wartość
$zmienna
przed
zwiększeniem
jej
wartości
(PHP
zwiększa
wartość
po
odczytaniu
jej
wartości
,
stąd
nazwa
'post-inkrementacja'
)
.
Popularnym
typem
wyrażeń
są
wyrażenia
porównania
.
Te
wyrażenia
zwracają
wartość
0
lub
1
,
oznaczając
odpowiednio
FALSE
lub
TRUE
.
PHP
obsługuje
(
większy)
,
=
(większy
lub
równy)
,
==
(równy)
,
!=
(nie
równy)
,
(mniejszy
)
i
=
(mniejszy
lub
równy
)
.
Wyrażenia
te
są
powszechnie
używane
przy
sprawdzaniu
warunków
,
jak
na
przykład
instrukcje
if
.
Ostatnim
przykładem
,
którym
będziemy
się
tu
zajmować
są
połączone
wyrażenia
operacji
i
przypisania
.
Już
wiesz
,
że
jeśli
chcesz
zwiększyć
wartość
zmiennej
$a
o
1
,
możesz
po
prostu
napisać
'
$a++
'
lub
'++$a
'
.
Ale
co
jeśli
chcesz
dodać
do
niej
więcej
niż
jeden
,
na
przykład
3
?
Mógłbyś
napisać
wielokrotnie
'
$a++
'
,
ale
nie
jest
to
sposób
ani
efektywny
ani
wygodny
.
Częściej
spotykane
jest
używanie
instrukcji
'
$a
=
$a
+
3'
.
'$a
+
4
'
zwraca
wartość
zmiennej
$a
plus
3
,
która
jest
przypisywana
spowrotem
do
$a
,
co
oznacza
zwiększenie
wartości
zmiennej
$a
o
3
.
W
PHP
,
tak
jak
kilku
innych
językach
jak
na
przykład
C
,
możesz
napisać
to
krócej
,
co
z
czasem
stanie
się
także
bardziej
przejrzyste
i
łatwiejsze
do
zrozumienia
.
Dodanie
4
do
bieżącej
wartości
$a
może
być
zapisane
jako
'
$a
+=
4
'
.
Oznacza
to
dokładnie
"
weź
wartość
$a
,
dodaj
do
niej
3
i
przypisz
ją
spowrotem
do
$a
"
.
Oprócz
bycia
krótszą
i
bardziej
przejrzystą
,
instrukcja
ta
jest
także
szybsza
w
wykonaniu
.
Wartość
'
$a
+=
5
'
,
tak
jak
wartość
zwykłego
przypisania
,
jest
przypisywaną
wartością
.
Zauważ
,
że
NIE
jest
to
4
,
ale
połączona
warotść
$a
i
4
(
jest
to
wartość
która
jest
przypisywana
do
$a
)
.
Dowolne
dwuoperandowe
operatory
mogą
być
użyte
w
trybie
operacji-przypisania
,
na
przykład
'
$a
-=
5
'
(odejmij
5
od
wartości
$a)
,
'$b
*=
7
'
(pomnóż
wartość
$b
przez
7
)
,
itp
.
Jest
jeszcze
jedno
wyrażenie
,
które
może
się
wydać
dziwne
jeśli
nie
widziałeś
go
w
innych
językac
,
trójoperandowy
operator
warunkowy
:
Jeśli wartością pierwszego podwyrażenia jest
TRUE
(rózna od zera), to zwracany jest drugie podwyrażanie, i jest to
wynik wyrażenia warunkowego. W przeciwnym wypadku, zwracana jest
wartość trzeciego podwyrażenia.
Poniższy
przykład
powinien
pomóc
w
lepszym
zrozumieniu
pre
-
i
postinkrementacji
i
ogólnie
koncepcji
wyrażeń
:
Na
początku
rozdziału
powiedzieliśmy
,
że
będziemy
opisywać
różne
typy
instrukcji
,
i
tak
jak
obiecywaliśmy
,
wyrażenia
mogą
być
instrukcjami
.
Jednakże
nie
każde
wyrażenie
jest
instrukcją
.
W
tym
przypadku
ma
postać
'
wyrażenie
'
'
;
'
,
czyli
wyrażenie
a
po
nim
średnik
.
W
'
$b=$a=5
;
'
,
$a=5
jest
poprawnym
wyrażeniem
,
ale
nie
jest
instrukcją
.
Jednakże
'
$b=$a=$b
;
'
jest
poprawną
intrukcją
.
Ostatnią
rzeczą
wartą
uwagi
jest
wartość
prawdy
wyrażeń
.
W
wielu
przypadkach
,
głównie
przy
sprawdzaniu
warunkow
i
w
pętlach
,
nie
interesuje
cię
wartość
wyrażenia
,
ale
tylko
czy
oznacza
TRUE
czy
FALSE
.
Stałe
TRUE
i
FALSE
Stałe
TRUE
i
FALSE
(
niezależne
od
wielkości
znaków
)
są
dwiema
możliwymi
wartościami
logicznymi
.
Kiedy
to
konieczne
,
wyrażenie
jest
automatycznie
konwertowane
na
typ
boolean
.
Zobacz
rozdział
o
rzutowaniu
typów
jeśli
interesują
cię
szczegóły
jak
to
jest
przeprowadzane
.
PHP
dostarcza
pełnej
i
potężnej
implementacji
wyrażeń
i
całkowita
ich
dokumentacja
przekracza
ramy
tego
podręcznika
.
Powyższe
przykłady
powinny
dać
ci
ogólne
pojęcie
czym
są
wyrażenia
i
jak
możesz
konstruować
przydatne
wyrażenia
.
Przez
resztę
podręcznika
będziemy
pisać
expr
aby
oznaczyć
dowolne
poprawne
wyrażenie
PHP
.