Rozdział 10 . Wyrażenia

Wyrażenia 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ń 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ń 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 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 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 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 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-- . 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ń 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 powszechnie używane przy sprawdzaniu warunków , jak na przykład instrukcje if .

Ostatnim przykładem , którym będziemy się tu zajmować 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 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 :

 
$pierwsze

 
?

 
$drugie

 
:

 
$trzecie



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ń :

 
function

 
double(

 
$i

 
)

 
{

 
return

 
$i*2

 
;

 
}

 
$b

 
=

 
$a

 
=

 
5

 
;

 
/

 
*

 
przypisz

 
wartość

 
pięc

 
do

 
zmiennej

 
$a

 
i

 
$b

 
*

 
/

 
$c

 
=

 
$a++

 
;

 
/

 
*

 
postinkrementuj

 
,

 
przypisz

 
początkową

 
wartość

 
$a

 
(5

 
)

 
do

 
$c

 
*

 
/

 
$e

 
=

 
$d

 
=

 
++$b

 
;

 
/

 
*

 
preinkrementuj

 
,

 
przypisz

 
zwiększoną

 
wartość

 
$b

 
(6

 
)

 
to

 
$d

 
i

 
$e

 
*

 
/

 
/

 
*

 
w

 
tym

 
momencie

 
i

 
$d

 
i

 
$e

 


 
równe

 
6

 
*

 
/

 
$f

 
=

 
double($d++)

 
;

 
/

 
*

 
przypisz

 
podwojoną

 
wartość

 
$d

 
emphasis

 
sprzed

 
/

 
emphasis

 
inkrementacji

 
,

 
2*6

 
=

 
12

 
do

 
$f

 
*

 
/

 
$g

 
=

 
double(++$e)

 
;

 
/

 
*

 
przypisz

 
podwojoną

 
wartość

 
$e

 
emphasis

 
po

 
/

 
emphasis

 
inkrementacji

 
,

 
2*7

 
=

 
14

 
do

 
$g

 
*

 
/

 
$h

 
=

 
$g

 
+=

 
10

 
;

 
/

 
*

 
na

 
początku

 
$g

 
jest

 
zwiększane

 
o

 
10

 
i

 
przyjmuje

 
wartość

 
24

 
;

 
wartość

 
przypisania

 
(24

 
)

 
jest

 
później

 
przypisywana

 
do

 
$h

 
,

 
które

 
przyjmuje

 
wartość

 
24

 
.

 
*

 
/





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 ) 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 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 .