Lekcje >> Podstawy PHP
Polimax

Drukarnia w Warszawie realizująca druk wizytówek, plakatów jak również fotoksiążki, fotoobrazy i fotokalendarze - z wysyłką na terenie całego kraju.

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: