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; echo '$c przechowuje ' . $c; 
  /*zmiennej $c przypisujemy wartość przechowywaną przez
  zmienną $a, a więc wartość 20*/
?>

Przeanalizuj komentarze, które wyjaśniają zastosowane instrukcje. Czy wartości określone podczas analizy kodu w komentarzach, zostały wyświetlone?

Łą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.


Jeżeli zapomniałeś jak przygotować i gdzie zapisywać pliki testowe: