اذهب إلى المحتوى
  • 0

أحتاج مساعدة في فهم كود php

_Mehdi

السؤال

السلام عليكم

ماذا تعني علامة ال& قبل البراميتر في هذه الدالة

 ولماذا يكون ناتج الاخراج 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;

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

يعني ذلك أنّك تمرّر المتغيّر بالمرجع أي تمرّر عنوانه وليس قيمته.

في البرنامج السابق، أسندت القيمة 3 للمتغيّر a$ ثم مرّرته بالمرجع إلى الدالة doSomething، فأصبح كل من المتغيرين arg$ و a$ يشيران إلى نفس القيمة.

ضمن الدالة doSomething أسندنا قيمة arg$ إلى المتغيّر return$ ثم زدنا قيمة arg$ بمقدار واحد:

$arg+=1;

فأصبح كل من arg$ و a$ يحمل القيمة 4

ثم أعادت الدالة القيمة الأصلية للمتغيّر a$ (قبل الزيادة) والتي خزنّاها ضمن المتغيّر return$ وذلك عن طريق العبارة:

return $return;

ستخزّن القيمة المُعادة ضمن المتغيّر b$ الذي ستكون قيمته في هذه الحالة 3، وتصبح قيمة a$ تساوي 4.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

هذا السلوك طبيعي. لأنّك عندئذٍ تمرّر المتغيّر a$ بالقيمة (بدون الرمز &) وليست بالمرجع. ففي هذه الحالة ستمرّر نسخة عن قيمة a$ وهي 3 إلى الدالة doSomething التي ستعدّل هذه القيمة ضمنها ولكن لن يؤثّر ذلك على قيمة a$ الأصلية أبدًا في هذه الحالة. انس الآن المتغيّر b$.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

شكرا جزيلا

 ولكن لماذا عندما احذف ال& تطبع الناتج 

a=3

b=3

ماتاثيرها بالضبط ؟ اذا امكن التعليق ولكم فائق الشكر

 

تم التعديل في بواسطة java
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...