PHP даги ҳаволалар
PHP да бир ўзгарувчининг қийматини бошқасига тенглаштириш мумкин:
<?php
$num1 = 1;
$num2 = $num1; // тенглаштирамиз
echo $num1; // 1
echo $num2; // 1
?>
Бундай тенглаштиришда янги ўзгарувчига биринчи ўзгарувчининг қийматининг нусхаси ёзилади. Бу демакки, ўзгарувчилар бир-бири билан ҳеч қандай богланмаган ва уларни мустақил ўзгартириш мумкин. Код мисолида ку́ринг:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1; // 1 - ўзгармади
?>
Аммо, шуни қилиш мумкинки, ўзгарувчининг қийматининг ўзи эмас, балки унинг ҳаволаси нусхалансин. Бу ҳолда бир ўзгарувчининг қийматини ўзгартириш, иккинчисининг ҳам қийматини ўзгартиришига олиб келади.
Қийматни ҳавола орқали ўтказish учун ўзгарувчи номи олдига амперсанд белгисини қў́йиш керак:
<?php
$num1 = 1;
$num2 = &$num1; // ҳавола орқали ўтказамиз
?>
Энди биринчи ўзгарувчини ўзгартириш иккинчисининг ҳам ўзгаришига олиб келади:
<?php
$num1 = 1;
$num2 = &$num1;
$num2 = 2;
echo $num1; // 2 - ўзгарди
?>
Худди шунингдек, агар биз биринчи ўзгарувчини ўзгартирсак, у ҳолда иккинчиси ҳам ўзгаради:
<?php
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Бажориладиган коднинг натижаси қандай бўлишини айтинг:
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Бажориладиган коднинг натижаси қандай бўлишини айтинг:
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Бажориладиган коднинг натижаси қандай бўлишини айтинг:
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Бажориладиган коднинг натижаси қандай бўлишини айтинг:
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>