WyrażeniaPodręcznik PHPPoprzedniNastępnyRozdział 9. Wyrażenia
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:
function foo ()
{
return 5;
}
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:
$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 są 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 (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.PoprzedniSpis treściNastępnyPredefiniowane stałePoczątek rozdziałuOperatory
Wyszukiwarka
Podobne podstrony:
language expressionslanguage expressionslanguage expressionsLanguage and Skills Test Units 1 2language3? EXAM LANGUAGE ELEMENTSfor studentslanguagewięcej podobnych podstron