PHP-da Havolalar
PHP-da bir o‘zgaruvchining qiymatini boshqasiga tenglashtirish mumkin:
<?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
$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
$num1 = 1;
$num2 = &$num1; // havola orqali uzatamiz
?>
Endi birinchi o‘zgaruvchini o‘zgartirish ikkinchisining ham o‘zgarishiga olib keladi:
<?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
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Quyidagi kodni bajarish natijasi qanday bo‘lishini ayting:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Quyidagi kodni bajarish natijasi qanday bo‘lishini ayting:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Quyidagi kodni bajarish natijasi qanday bo‘lishini ayting:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Quyidagi kodni bajarish natijasi qanday bo‘lishini ayting:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>