شرح صفوف ومحتوى الفقرة
قاعدة أمان حرجة في PHP: عند استخدام المرجع &$value في حلقة foreach، يجب دائماً استدعاء unset($value); فور انتهاء قوس الحلقة }:
- فخ المرجع المعلق (Dangling Reference): يظل متغير الحلقة موجوداً في النطاق بعد انتهاء الحلقة، ويبقى مرتبطاً بالعنصر الأخير في المصفوفة؛ فإذا استخدمت نفس اسم المتغير لاحقاً ستقوم بتخريب العنصر الأخير دون قصد!
- فك الارتباط عبر
unset($val): استدعاءunset($val);يفك ارتباط المتغير المؤقت فقط مع بقاء المصفوفة وعنصرها الأخير سليمين تماماً.
PHP
<?php
$nums = [10, 20, 30];
foreach ($nums as &$n) {
$n *= 2;
}
unset($n); // Breaks reference to $nums[2]
$n = 999; // Safe! Does NOT overwrite $nums[2]
echo $nums[0] . ", " . $nums[1] . ", " . $nums[2];