PHPda o'zgaruvchilar qanday o'tkaziladi?
sobes.tech AI
AIdan javob
PHP'dagi o'zgaruvchilar standart tarzda qiymat orqali o'tkaziladi. Bu shuni anglatadiki, bir o'zgaruvchining qiymatini boshqasiga tayinlash yoki o'zgaruvchini funktsiyaga o'tkazishda, qiymatning nusxasi yaratiladi. Ushbu nusxadagi o'zgarishlar asl o'zgaruvchini ta'sir qilmaydi.
Ammo, o'zgaruvchilar referens orqali ham o'tkazilishi mumkin. Bu holda, qiymat nusxasi o'rniga, asl o'zgaruvchining xotira maydoniga ko'rsatkich yuboriladi. Referens orqali kiritilgan o'zgarishlar to'g'ridan-to'g'ri asl o'zgaruvchini ta'sir qiladi.
Referens orqali o'tkazish quyidagi hollarda qo'llaniladi:
-
Referens bilan tayinlash:
=&operatori bilan tayinlash.// Referens bilan tayinlash $a = 10; $b =& $a; $b = 20; // $b ni o'zgartirish, $a ni ham o'zgartiradi // $a endi 20 -
Funktsiyaga parametrni referens orqali o'tkazish: Funktsiya ta'rifida parametr nomidan oldin
&qo'shish.<?php // Referens bilan argument qabul qiladigan funksiya function modifyValue(&$value) { $value *= 2; } $number = 5; modifyValue($number); // $number endi 10 ?> -
Funktsiyadan referens orqali qiymatni qaytarish: Funktsiya nomidan oldin
&ishlatish.<?php // Referens bilan qiymatni qaytaradigan funksiya function &getReference() { static $value = 0; $value++; return $value; } $a = &getReference(); $a = 100; // $a ni o'zgartirish, funksiyaning ichidagi statik o'zgarishni ham o'zgartiradi $b = &getReference(); // $b endi ayni statik o'zgaruvchiga referens bo'lib qoladi (101 ga teng) ?>
E'tibor bering, ba'zi ma'lumot turlari, masalan, obyektlar, har doim referens orqali o'tkaziladi (aniqroq aytganda, obyektga referens yuboriladi). Bir obyektni boshqasiga tayinlaganda, ikkala o'zgaruvchi ham bir xil obyekt nusxasiga murojaat qiladi.
| O'tkazish usuli | Qanday ishlaydi | Qo'llanilishi |
|---|---|---|
| Qiymat bilan | Qiymatning nusxasi yaratiladi | Standart, asl o'zgaruvchiga xavfsiz |
| Referens bilan | Xotira manziliga ko'rsatkich yuboriladi | O'zgarishlar to'g'ridan-to'g'ri asl o'zgaruvchini ta'sir qiladi |