PHP-da Havolalar

PHP-da bir o‘zgaruvchining qiymatini boshqasiga tenglashtirish mumkin:

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

Bunday tenglashtirishda yangi o‘zgaruvchiga birinchi o‘zgaruvchining qiymati nusxasi yoziladi. Bu shuni anglatadiki, o‘zgaruvchilar bir-biri bilan hech qanday bog‘liq emas va ularni mustaqil ravishda o‘zgartirish mumkin. Kod misolida ko‘ring:

php<?php
  $num1 = 1;
  $num2 = $num1;
  $num2 = 2;
  
  echo $num1; // 1 - o‘zgarmadi
?>

Biroq, shunday qilish mumkinki, o‘zgaruvchining qiymati emas, balki unga havola nusxalansin. Bu holda bir o‘zgaruvchining qiymati o‘zgarganda, ikkinchisining qiymati ham o‘zgaradi.

Qiymatni havola orqali uzatish uchun o‘zgaruvchi nomidan oldin ampersand (&) qo‘yish kerak:

php<?php
  $num1 = 1;
  $num2 = &$num1; // havola orqali uzatamiz
?>

Endi birinchi o‘zgaruvchini o‘zgartirish ikkinchisining ham o‘zgarishiga olib keladi:

php<?php
  $num1 = 1;
  $num2 = &$num1;
  $num2 = 2;
  
  echo $num1; // 2 - o‘zgardi
?>

Xuddi shunday, agar biz birinchi o‘zgaruvchini o‘zgartirsak, ikkinchisi ham o‘zgaradi:

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

Quyidagi kodni bajarish natijasi qanday bo‘lishini ayting:

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

Quyidagi kodni bajarish natijasi qanday bo‘lishini ayting:

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

Quyidagi kodni bajarish natijasi qanday bo‘lishini ayting:

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

Quyidagi kodni bajarish natijasi qanday bo‘lishini ayting:

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