Operator przypisania
Podstawowa definicja
Symbol =
(znak równości) zawsze występuje jako operator przypisania i należy go odczytywać jako jest przypisana wartość. Znak równości jest operatorem, natomiast argumenty występujące po jego lewej i prawej stronie nazywamy operandami.
W instrukcji przypisania $zmienna=3;
mamy lewy operand - $zmienna
, operator =
oraz prawy operand - 3
. Tę instrukcję należy odczytać następująco: zmiennej $zmienna
przypisano wartość 3
.
Zmiennej można przypisywać nie tylko konkretne wartości, ale także inne zmienne, jak również wyrażenia. Podczas tworzenia wyrażenia można, identycznie jak w matematyce, stosować nawiasy w celu określenia kolejności wykonywanych działań.
Przypomnimy sobie, że instrukcja przypisania inicjuje zmienną której wtedy przypisujemy taki sam typ, jak typ przypisywanej zmiennej.
Ćwiczenie 1_8_2_1. Podstawowe operacje przypisania
W tym ćwiczeniu zastosujemy pojedynczy plik z kodem PHP. Należy zastosować następujący kod PHP:
<?php
$a=5; echo '$a przechowuje '.$a.'<br />';
/*inicjowanie zmiennej $a poprzez instrukcję przypisania,
od tej tego miejsca kodu, $a przechowuje wartość 5*/
$b=10;
$c=$a+$b; echo '$c przechowuje '.$c.'<br />';
/*zmiennej $c przypisujemy sumę wartości przechowywanych
przez zmienne $a i $b, więc od tego miejsca, zmienna $c
przechowuje wartość 15*/
$d=$a*($b+$c); echo '$d przechowuje '.$d.'<br />';
/*jaka wartość będzie przypisana zmiennej $d?
Biorąc pod uwagę kolejność działań (najpierw w nawiasach)
zmiennej $d przypisujemy tutaj wartość 125*/
$d=$c+($a=20); echo '$d przechowuje '.$d.'<br />';
/*w nawiasach możemy również dokonać przypisania,
zmiennej $d przypisujemy tytaj wartość 35*/
$c=$a+$e;
/*zostanie pokazany komunikat o błędzie ERROR...,
ponieważ zmienna $e nie była wcześniej zainicjowana*/
?>
Przeanalizuj komentarze, które wyjaśniają zastosowane instrukcje. Czy wartości określone podczas analizy kodu w komentarzach, zostały wyświetlone? Przetłumacz komunikat Undefined variable.
Łączone operatory przypisania
Jeżeli po prawej stronie operatora przypisania znajduje się wyrażenie ze zmienną której przypisujemy wartość tego wyrażenia, to możemy zastosować zapis skrócony:
$a+=$b
, oznacza to samo co $a=$a+$b
.
$a-=$b
, oznacza to samo co $a=$a-$b
.
$a*=$b
, oznacza to samo co $a=$a*$b
.
$a/=$b
, oznacza to samo co $a=$a/$b
.
$a%=$b
, oznacza to samo co $a=$a%$b
.
$a.=$b
, oznacza to samo co $a=$a.$b
.
Ćwiczenie 1_8_2_2. Zastosowanie łączonych operatorów przypisania
W tym ćwiczeniu sprawdzimy działanie łączonych operatorów przypisania:
<?php
$b=5;
$a=6; $a+=$b; echo '$a przechowuje '.$a.'<br />';//oczekujemy 11
$a=6; $a-=$b; echo '$a przechowuje '.$a.'<br />';//oczekujemy 1
$a=6; $a*=$b; echo '$a przechowuje '.$a.'<br />';//oczekujemy 30
$a=6; $a/=$b; echo '$a przechowuje '.$a.'<br />';//oczekujemy 1.2
$a=6; $a%=$b; echo '$a przechowuje '.$a.'<br />';//oczekujemy 1
$a=6; $a.=$b; echo '$a przechowuje '.$a;//oczekujemy 65
/*w przypadku ciągów znaków, które są cyframi, interpreter
automatycznie rzutuje typy string na integer lub odwrotnie*/
?>
Przeanalizuj komentarze, które wyjaśniają zastosowane instrukcje. Czy wartości określone podczas analizy kodu w komentarzach, zostały wyświetlone?
Pre- i postinkrementacja oraz dekrementacja
Pomino groźnie brzmiących określeń, sprawa jest bardzo prosta - chodzi o skrócony sposób zapisywania powiększania, lub zmniejszania wartości przechowywanej przez zmienną o 1, co zapisujemy podwójnym znakiem plus ++
, lub podwójnym znakiem minus --
. Tak więc istnieje:
- inkrementacja - powiększnie o 1 wartości przechowywanej przez zmienną,
- dekrementacja - pomniejszanie o 1 wartości przechowywanej przez zmienną.
Zmiana wartości może następować od razu - w miejscu zapisania w kodzie, lub po zakończeniu instrukcji w której występuje:
- preinkrementacja lub predekrementacja - zmiana wartości od razu, w miejscu gdzie znajduje się w kodzie,
- postinkrementacja lub postdekrementacja - zmiana wartości dopiero po zakończeniu instrukcji.
Ćwiczenie 1_8_2_3. Inkrementacja i dekrementacja
Zastosuj następujący kod PHP:
<?php
//inkrementacja
$a=5; echo 'a) $a przechowuje '.$a++.'<br />';
/*oczekujemy 5, ponieważ zmiana nastąpi dopiero
po zakończeniu instrukcji echo*/
echo 'b) $a przechowuje '.$a.'<br />';
/*oczekujemy 6, ponieważ jesteśmy
po zakończeniu instrukcji echo*/
$a=5; echo 'c) $a przechowuje '.++$a.'<br />';
/*oczekujemy 6, ponieważ zmiana nastąpiła
w momencie wystąpienia w kodzie ++$a*/
//Analogicznie jest z dekrementacją
$a=5; echo 'd) $a przechowuje '.$a--.'<br />';//oczekujemy 5
echo 'e) $a przechowuje '.$a.'<br />';//oczekujemy 4
$a=5; echo 'f) $a przechowuje '.--$a.'<br />';//oczekujemy 4
?>
Przeanalizuj komentarze, które wyjaśniają zastosowane instrukcje. Czy wartości określone podczas analizy kodu w komentarzach, zostały wyświetlone?
Operator referencji - &
Operatorem referencji jest znak & tzw. ampersand. Można go stosować w połączeniu z przypisaniem. W dalszym toku nauki znajdzie on zastosowanie podczas definiowania własnych funkcji. Działanie tego operatora wytłumaczymy na przykładzie:
Ćwiczenie 1_8_2_4. Referencje
Zastosuj następujący kod PHP:
<?php
//operacje na wartościach - bez referencji
$a=5;
$b=$a;//$b jest kopią $a
$a=7;//nie zmienia to wartości $b
echo '$a przechowuje '.$a.', $b przechowuje '.$b.'<br />';
//oczekujemy wartości 7 oraz 5;
//zastosowanie operatora referencji
$a=5;
$b=&$a;//$b wskazuje na ten sam adres pamięci co $a
$a=7;//zmieniając $a zmieniamy wartość $b
echo '$a przechowuje '.$a.', $b przechowuje '.$b.'<br />';
//oczekujemy wartości 7 oraz 7;
?>
Przeanalizuj treść komentarzy, które tłumaczą działanie operatora referencji.
Praca domowa
Wyjaśnij w zeszycie działanie inkrementacji i dekrementacji.
Jeżeli zapomniałeś jak przygotować i gdzie zapisywać pliki testowe: