Reference v PHP
V PHP lze přiřadit hodnotu jedné proměnné do druhé:
<?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
$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
$num1 = 1;
$num2 = &$num1; // předáváme referencí
?>
Nyní změna první proměnné povede i ke změně druhé:
<?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
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Řekněte, jaký bude výsledek provedení kódu:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Řekněte, jaký bude výsledek provedení kódu:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Řekněte, jaký bude výsledek provedení kódu:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Řekněte, jaký bude výsledek provedení kódu:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>