انتقل إلى محتوى الدرس

Copying by Value vs Reference Alias النسخ المستقل بالقيمة مقابل الربط بالمرجع &

افحص حالة المتغيرات بدقة في PHP 8 باستخدام isset وempty وis_null وunset، وافهم الفرق العميق بين النسخ بالقيمة والإسناد بالمرجع.
1 صفوف تعليمية
PHP
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

افتراضياً في PHP، يتم إسناد المتغيرات بالقيمة (نسخة مستقلة)، بينما إضافة الرمز & قبل المتغير المصدر تنشئ مرجعاً يشترك في نفس القيمة بالذاكرة.

  • في الإسناد بالقيمة ($b = $a)، تعديل $b لاحقاً لا يؤثر إطلاقاً على قيمة $a الأصلية.
  • في الإسناد بالمرجع ($ref = &$a)، يشير كلا الاسمين إلى نفس حاوية القيمة الداخلية (zval) في محرك Zend.
  • أي تعديل يُجرى عبر $a أو عبر $ref يظهر فوراً عند قراءة الطرف الآخر.

تغيير $copiedPrice إلى 150 يُبقي $price عند 100، بينما تغيير $aliasBalance إلى 750 يحدّث $sharedBalance إلى 750 أيضاً.

مخطط تدفق التنفيذ العملي لقسم النسخ المستقل بالقيمة مقابل الربط بالمرجع & في لغة PHP
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";