Odkazy v PHP

V PHP je možné priradiť hodnotu jednej premennej do druhej:

php<?php
  $num1 = 1;
  $num2 = $num1; // priraďujeme
  
  echo $num1; // 1
  echo $num2; // 1
?>

Pri takomto priradení sa do novej premennej zapíše kópia hodnoty prvej premennej. To znamená, že premenné nie sú nijako prepojené a je možné ich nezávisle meniť. Pozrite si príklad kódu:

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1; // 1 - nezmenilo sa
?>

Je však možné urobiť to tak, aby sa skopírovala nie hodnota premennej, ale odkaz na ňu. V tomto prípade pri zmene hodnoty jednej premennej sa zmení aj hodnota druhej.

Na to, aby sa hodnota predala odkazom, je potrebné pred názov premennej umiestniť ampersand:

php<?php
  $num1 = 1;
  $num2 = &$num1; // prenášame odkazom
?>

Teraz zmena prvej premennej povedie aj k zmene druhej:

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

Podobne, ak zmeníme prvú premennú, zmení sa aj druhá:

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

Povedzte, aký bude výsledok vykonania kódu:

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

Povedzte, aký bude výsledok vykonania kódu:

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

Povedzte, aký bude výsledok vykonania kódu:

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

Povedzte, aký bude výsledok vykonania kódu:

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