Henvisninger i PHP
I PHP kan man tildele verdien av en variabel til en annen:
<?php
$num1 = 1;
$num2 = $num1; // tilordner
echo $num1; // 1
echo $num2; // 1
?>
Ved en slik tilordning blir en kopi av verdien skrevet inn i den nye variabelen. Dette betyr at variablene ikke er koblet til hverandre på noen måte og de kan endres uavhengig av hverandre. Se på kodeeksemplet:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1; // 1 - endret seg ikke
?>
Man kan imidlertid gjøre slik at det ikke er verdien av variabelen som kopieres, men en henvisning til den. I dette tilfellet vil endring av verdien til én variabel også endre verdien til den andre.
For å sende verdien via henvisning, må man sette et &-tegn foran variabelnavnet:
<?php
$num1 = 1;
$num2 = &$num1; // sender via henvisning
?>
Nå vil endring av den første variabelen også føre til endring av den andre:
<?php
$num1 = 1;
$num2 = &$num1;
$num2 = 2;
echo $num1; // 2 - endret seg
?>
På samme måte, hvis vi endrer den første variabelen, vil også den andre endre seg:
<?php
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Fortell hva som blir resultatet av å kjøre koden:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Fortell hva som blir resultatet av å kjøre koden:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Fortell hva som blir resultatet av å kjøre koden:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Fortell hva som blir resultatet av å kjøre koden:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>