Nuorodos PHP

PHP galima priskirti reikšmę vieno kintamojo kitam:

php<?php
  $num1 = 1;
  $num2 = $num1; // priskiriame
  
  echo $num1; // 1
  echo $num2; // 1
?>

Esant tokiam priskyrimui, į naują kintamąjį įrašoma pirmojo kintamojo reikšmės kopija. Tai reiškia, kad kintamieji nėra jokiu būdu susiję vienas su kitu ir juos galima keisti nepriklausomai. Žiūrėkite pavyzdyje:

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1; // 1 - nepasikeitė
?>

Tačiau galima padaryti taip, kad būtų kopijuojama ne kintamojo reikšmė, o nuoroda į ją. Tokiu atveju keičiant vieno kintamojo reikšmę, keisis ir kito reikšmė.

Norint perduoti reikšmę nuoroda, prieš kintamojo vardą reikia padėti ampersandą:

php<?php
  $num1 = 1;
  $num2 = &$num1; // perduodame nuoroda
?>

Dabar pirmojo kintamojo pakeitimas taps ir antrojo pakeitimo priežastimi:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2 = 2;
  
  echo $num1; // 2 - pasikeitė
?>

Analogškai, jei pakeisime pirmąjį kintamąjį, pasikeis ir antrasis:

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

Pasakykite, koks bus kodo vykdymo rezultatas:

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

Pasakykite, koks bus kodo vykdymo rezultatas:

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

Pasakykite, koks bus kodo vykdymo rezultatas:

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

Pasakykite, koks bus kodo vykdymo rezultatas:

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