Hivatkozások a PHP-ban

A PHP-ban egy változó értékét hozzárendelhetjük egy másikhoz:

php<?php
  $num1 = 1;
  $num2 = $num1; // hozzárendeljük
  
  echo $num1; // 1
  echo $num2; // 1
?>

Egy ilyen hozzárendelésnél az első változó értékének egy másolata kerül a új változóba. Ez azt jelenti, hogy a változók semmilyen módon nincsenek összekötve egymással, és függetlenül módosíthatók. Nézd meg a példakódot:

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1; // 1 - nem változott
?>

Megtehetjük azonban, hogy ne a változó értékét másoljuk, hanem egy hivatkozást arra. Ebben az esetben, ha az egyik változó értéke megváltozik, a másik értéke is megváltozik.

Ahhoz, hogy érték szerinti átadás helyett hivatkozással adjuk át az értéket, a változó neve elé egy és-jelet (&) kell tenni:

php<?php
  $num1 = 1;
  $num2 = &$num1; // hivatkozással adjuk át
?>

Most az első változó megváltoztatása a második megváltozásához is vezet:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2 = 2;
  
  echo $num1; // 2 - megváltozott
?>

Hasonlóképpen, ha megváltoztatjuk az első változót, a második is megváltozik:

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

Mondd el, mi lesz a kód végrehajtásának eredménye:

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

Mondd el, mi lesz a kód végrehajtásának eredménye:

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

Mondd el, mi lesz a kód végrehajtásának eredménye:

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

Mondd el, mi lesz a kód végrehajtásának eredménye:

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