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

Passing Arguments by Reference تمرير المعاملات بالمرجع &$param لتعديل المتغير الأصلي

استقبل عدداً مرناً من المعاملات عبر معامل التجميع (...$args)، وفكك المصفوفات عند الاستدعاء، وتحقق من وجود الدوال بـ function_exists.
1 صفوف تعليمية
PHP
0 مشاهدة

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

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

افتراضياً يمرر PHP المتغيرات والمصفوفات بالقيمة. أما وضع الرمز (&$param) فيربط المعامل بالمتغير الأصلي للمستدعي بحيث يستمر أي تعديل خارج الدالة.

  • لا يمكن تمرير سوى متغيرات فعلية (مثل $counter) إلى معامل بالمرجع؛ وتمرير قيمة ثابتة مثل increment(5) يطلق خطأً فادحاً.
  • تستخدم دوال PHP المدمجة مثل sort(&$array) وarray_splice(&$array, ...) التمرير بالمرجع لتعديل المصفوفة في مكانها.
  • في الكود الحديث، يُفضل إرجاع القيمة الجديدة عبر return بدلاً من التعديل بالمرجع كلما أمكن ليكون مسار البيانات أوضح.

لأن &$price مُمرر بالمرجع، فإن طرح الخصم يحدّث قيمة المتغير الأصلي $cartSubtotal خارج الدالة إلى 170.

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