Reference u PHP-u

U PHP-u možemo dodeliti vrednost jedne promenljive drugoj:

php<?php
  $num1 = 1;
  $num2 = $num1; // dodeljujemo
  
  echo $num1; // 1
  echo $num2; // 1
?>

Pri takvoj dodeli u novu promenljivu se upisuje kopija vrednosti prve promenljive. To znači da promenljive nisu nikako povezane jedna sa drugom i da se mogu nezavisno menjati. Pogledajte na primeru koda:

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1; // 1 - nije se promenilo
?>

Međutim, može se postići da se kopira ne vrednost promenljive, već referenca na nju. U ovom slučaju pri promeni vrednosti jedne promenljive, menjaće se i vrednost druge.

Da bi se vrednost prosledila po referenci, potrebno je pre imena promenljive staviti ampersand:

php<?php
  $num1 = 1;
  $num2 = &$num1; // prosleđujemo po referenci
?>

Sada će promena prve promenljive dovesti i do promene druge:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2 = 2;
  
  echo $num1; // 2 - promenjeno
?>

Slično, ako promenimo prvu promenljivu, promeniće se i druga:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num1 = 2;
  
  echo $num2; // 2
?>
Задание 1

Objasnite, kakav će biti rezultat izvršenja koda:

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1;
  echo $num2;
?>
Задание 2

Objasnite, kakav će biti rezultat izvršenja koda:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2++;
  
  echo $num1;
  echo $num2;
?>
Задание 3

Objasnite, kakav će biti rezultat izvršenja koda:

php<?php
  $num1 = 1;
  $num2 = $num1;
  
  $num1++;
  $num2++;
  
  echo $num1;
  echo $num2;
?>
Задание 4

Objasnite, kakav će biti rezultat izvršenja koda:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  
  $num1++;
  $num2++;
  
  echo $num1;
  echo $num2;
?>