Референце у PHP

У PHP је могуће доделити вредност једне променљиве другој:

php<?php
  $num1 = 1;
  $num2 = $num1; // додељујемо
  
  echo $num1; // 1
  echo $num2; // 1
?>

При таквој додели у нову променљиву уписује се копија вредности прве променљиве. То значи да променљиве нису повезане међусобно и да се могу независно мењати. Погледајте пример кода:

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1; // 1 - није се променило
?>

Међутим, могуће је учинити да се не копира вредност променљиве, већ референца на њу. У том случају при промени вредности једне променљиве, мењаће се и вредност друге.

Да би се вредност проследила пo референци, потребно је пре имена променљиве ставити амперсанд:

php<?php
  $num1 = 1;
  $num2 = &$num1; // прослеђујемо по референци
?>

Сада ће промена прве променљиве довести и до промене друге:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2 = 2;
  
  echo $num1; // 2 - променило се
?>

Слично, ако променимо прву променљиву, промениће се и друга:

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

Реците, какав ће бити резултат извршавања кода:

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

Реците, какав ће бити резултат извршавања кода:

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

Реците, какав ће бити резултат извршавања кода:

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

Реците, какав ће бити резултат извршавања кода:

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