شرح صفوف ومحتوى الفقرة
افتراضياً في PHP، يتم إسناد المتغيرات بالقيمة (نسخة مستقلة)، بينما إضافة الرمز & قبل المتغير المصدر تنشئ مرجعاً يشترك في نفس القيمة بالذاكرة.
- في الإسناد بالقيمة (
$b = $a)، تعديل$bلاحقاً لا يؤثر إطلاقاً على قيمة$aالأصلية. - في الإسناد بالمرجع (
$ref = &$a)، يشير كلا الاسمين إلى نفس حاوية القيمة الداخلية (zval) في محرك Zend. - أي تعديل يُجرى عبر
$aأو عبر$refيظهر فوراً عند قراءة الطرف الآخر.
تغيير $copiedPrice إلى 150 يُبقي $price عند 100، بينما تغيير $aliasBalance إلى 750 يحدّث $sharedBalance إلى 750 أيضاً.
PHP
<?php
$price = 100;
$copiedPrice = $price;
$copiedPrice = 150;
$sharedBalance = 500;
$aliasBalance = &$sharedBalance;
$aliasBalance = 750;
echo "Price: $price, Copy: $copiedPrice\n";
echo "Shared: $sharedBalance, Alias: $aliasBalance\n";