Länkar i PHP

I PHP kan man tilldela värdet av en variabel till en annan:

php<?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<?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<?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<?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<?php
  $num1 = 1;
  $num2 = &$num1;
  $num1 = 2;
  
  echo $num2; // 2
?>
Задание 1

Berätta vad resultatet av att exekvera koden blir:

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

Berätta vad resultatet av att exekvera koden blir:

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

Berätta vad resultatet av att exekvera koden blir:

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

Berätta vad resultatet av att exekvera koden blir:

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