Референци во 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 - не е променето
?>

Сепак, може да се направи така што да се копира не вредноста на променливата, туку референца кон неа. Во овој случај при промена на вредноста на едната променлива, ќе се промени и вредноста на другата.

За да се пренесе вредност по референца, потребно е пред името на променливата да се стави амперсанд:

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;
?>