Länkar i PHP
I PHP kan man tilldela värdet av en variabel till en annan:
<?php
$num1 = 1;
$num2 = $num1; // tilldelar
echo $num1; // 1
echo $num2; // 1
?>
Vid en sådan tilldelning skrivs en kopia av värdet från den första variabeln in i den nya variabeln. Det betyder att variablerna inte är kopplade till varandra på något sätt och de kan ändras oberoende av varandra. Se följande kodexempel:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1; // 1 - förändrades inte
?>
Det är dock möjligt att göra så att det inte är värdet av variabeln som kopieras, utan en referens till den. I detta fall kommer värdet på den andra variabeln också att ändras när värdet på den första variabeln ändras.
För att skicka ett värde via referens måste man sätta ett et-tecken (&) före variabelnamnet:
<?php
$num1 = 1;
$num2 = &$num1; // skickar via referens
?>
Nu kommer en ändring av den första variabeln att leda till en ändring av den andra också:
<?php
$num1 = 1;
$num2 = &$num1;
$num2 = 2;
echo $num1; // 2 - förändrades
?>
På samma sätt, om vi ändrar den första variabeln, så kommer den andra att ändras också:
<?php
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Berätta vad resultatet av att exekvera koden blir:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Berätta vad resultatet av att exekvera koden blir:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Berätta vad resultatet av att exekvera koden blir:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Berätta vad resultatet av att exekvera koden blir:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>