Reference v PHP

V PHP lze přiřadit hodnotu jedné proměnné do druhé:

php<?php
  $num1 = 1;
  $num2 = $num1; // přiřazujeme
  
  echo $num1; // 1
  echo $num2; // 1
?>

Při takovém přiřazení se do nové proměnné zapíše kopie hodnoty první proměnné. To znamená, že proměnné na sobě nijak nezávisí a lze je měnit nezávisle na sobě. Podívejte se na příklad kódu:

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1; // 1 - nezměnilo se
?>

Lze však učinit tak, aby nekopírovala hodnota proměnné, ale reference na ni. V tomto případě při změně hodnoty jedné proměnné dojde ke změně i hodnoty druhé.

K tomu, aby se hodnota předala referencí, je třeba před název proměnné umístit ampersand:

php<?php
  $num1 = 1;
  $num2 = &$num1; // předáváme referencí
?>

Nyní změna první proměnné povede i ke změně druhé:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2 = 2;
  
  echo $num1; // 2 - změnilo se
?>

Podobně, pokud změníme první proměnnou, změní se i druhá:

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

Řekněte, jaký bude výsledek provedení kódu:

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

Řekněte, jaký bude výsledek provedení kódu:

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

Řekněte, jaký bude výsledek provedení kódu:

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

Řekněte, jaký bude výsledek provedení kódu:

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