_Mehdi نشر 15 مايو 2016 أرسل تقرير نشر 15 مايو 2016 السلام عليكم ماذا تعني علامة ال& قبل البراميتر في هذه الدالة ولماذا يكون ناتج الاخراج a=4 , b=3 function doSomething(&$arg) { $return=$arg; $arg+=1; return $return; } $a=3; $b=doSomething($a); echo "a=".$a; echo "<br/>"; echo "b=".$b; اقتباس
1 سعيد نشر 15 مايو 2016 أرسل تقرير نشر 15 مايو 2016 يعني ذلك أنّك تمرّر المتغيّر بالمرجع أي تمرّر عنوانه وليس قيمته. في البرنامج السابق، أسندت القيمة 3 للمتغيّر a$ ثم مرّرته بالمرجع إلى الدالة doSomething، فأصبح كل من المتغيرين arg$ و a$ يشيران إلى نفس القيمة. ضمن الدالة doSomething أسندنا قيمة arg$ إلى المتغيّر return$ ثم زدنا قيمة arg$ بمقدار واحد: $arg+=1; فأصبح كل من arg$ و a$ يحمل القيمة 4 ثم أعادت الدالة القيمة الأصلية للمتغيّر a$ (قبل الزيادة) والتي خزنّاها ضمن المتغيّر return$ وذلك عن طريق العبارة: return $return; ستخزّن القيمة المُعادة ضمن المتغيّر b$ الذي ستكون قيمته في هذه الحالة 3، وتصبح قيمة a$ تساوي 4. 1 اقتباس
1 سعيد نشر 15 مايو 2016 أرسل تقرير نشر 15 مايو 2016 هذا السلوك طبيعي. لأنّك عندئذٍ تمرّر المتغيّر a$ بالقيمة (بدون الرمز &) وليست بالمرجع. ففي هذه الحالة ستمرّر نسخة عن قيمة a$ وهي 3 إلى الدالة doSomething التي ستعدّل هذه القيمة ضمنها ولكن لن يؤثّر ذلك على قيمة a$ الأصلية أبدًا في هذه الحالة. انس الآن المتغيّر b$. 1 اقتباس
0 _Mehdi نشر 15 مايو 2016 الكاتب أرسل تقرير نشر 15 مايو 2016 (معدل) شكرا جزيلا ولكن لماذا عندما احذف ال& تطبع الناتج a=3 b=3 ماتاثيرها بالضبط ؟ اذا امكن التعليق ولكم فائق الشكر تم التعديل في 15 مايو 2016 بواسطة java اقتباس
السؤال
_Mehdi
السلام عليكم
ماذا تعني علامة ال& قبل البراميتر في هذه الدالة
ولماذا يكون ناتج الاخراج a=4 , b=3
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.