شرح صفوف ومحتوى الفقرة
افتراضياً يمرر PHP المتغيرات والمصفوفات بالقيمة. أما وضع الرمز (&$param) فيربط المعامل بالمتغير الأصلي للمستدعي بحيث يستمر أي تعديل خارج الدالة.
- لا يمكن تمرير سوى متغيرات فعلية (مثل
$counter) إلى معامل بالمرجع؛ وتمرير قيمة ثابتة مثلincrement(5)يطلق خطأً فادحاً. - تستخدم دوال PHP المدمجة مثل
sort(&$array)وarray_splice(&$array, ...)التمرير بالمرجع لتعديل المصفوفة في مكانها. - في الكود الحديث، يُفضل إرجاع القيمة الجديدة عبر
returnبدلاً من التعديل بالمرجع كلما أمكن ليكون مسار البيانات أوضح.
لأن &$price مُمرر بالمرجع، فإن طرح الخصم يحدّث قيمة المتغير الأصلي $cartSubtotal خارج الدالة إلى 170.
PHP
<?php
function applyDiscount(&$price, $percent) {
$discount = $price * ($percent / 100);
$price -= $discount;
return $discount;
}
$cartSubtotal = 200.00;
$saved = applyDiscount($cartSubtotal, 15);
echo "Saved: $$saved | New Subtotal: $$cartSubtotal\n";