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

السؤال

Recommended Posts

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

تستخدم ال الforeach لتكرار تنفيذ امر معين و طريقة استخدامها هنا صحيحة حيث اذا كان الامر الذى نريد تنفيذه هو عبارة عن سطر واحد فلا مشكلة من عدم وضع اى اقواس .ولكن اذا كان الامر الذى نريد تكراره اكثر من سطر ولم نضع الاقواس فسيتم تكرار اول سطر فقط وباقى الاسطر سيعتبر انها ليست بداخل ال foreach .

اما بالنسبة لاستخدام += فهى طريقة مختصرة فبدلا من كتابة الامر هكذا .

$acc = $acc + $number;

قمنا باختصارها وهى تعنى اننا نريد ان نضيف على القيمة التى فى اليسار قيمة جديدة تساوى القيمة التى فى اليمين . ومن الممكن ايضا استخدام جميع المعاملات -= او *= او /= ايضا.

ويوجد خطأ لديكى فى الكود فلاحظى هنا فى تعريف معامل الدالة sum قمتى بكتابته هكذا 

function sum(...$numbers)

فهذا معناه انكى تخبرين php ان يقوم بجمع جميع المعاملات التى يتم تمريرها الى الدالة فى مصفوفة . لذلك عند استدعاء الدالة sum لا تقومى بارسال مصفوفة بل بارسال الارقام متفرقة هكذا .

sum(3,2,4,10);

و php تلقائيا سيقوم بجمعهم فى مصفوفة واحدة ويضعها فى المعامل $numbers . اى انكى اذا حاولتى ان تقومى بطباعة المعامل $numbers سترين انه مصفوفة وليس رقم .

 

  • 0
نشر

أولاً الخطأ الذي يظهر بسبب أن لا نحتاج لإستخدام ال spread operator وهو الثلاث نقاط . . . 

لذلك يصبح الكود كالتالي

function sum($numbers)

بدلاً من 

function sum(...$numbers)

ثانياً بالنسبة للمعامل += هو معامل إضافة تراكمية  يعني أننا نريد إضافة العدد أو القيمة على يسار المعامل إلى المتغير الموجود على يمينه، بحيث يتم تحديث قيمة هذا المتغير.

مثال بسيط:

$x = 5; 
$x += 3;

هنا نحن نقول أريد إضافة القيمة 3 إلى متغير $x. فبعد التنفيذ ستكون قيمة $x تساوي 5 + 3 = 8 أي أن القيمة الأصلية لـ$x وهي 5 تم تحديثها إلى 8 عن طريق إضافة 3 إليها.

لذلك السطر 

$acc += $number;

هو  إختصار ل

$acc = $acc + $number;

 

  • 0
نشر

في البداية دعني اقوم بترتيب الكود وتعديله كي يزول الخطأ

<?php

function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $number) 
        $acc += $number;
    
    echo $acc;
}

$arr = [3, 2, 4, 10];
sum(...$arr);//قمت باضافة 3 نقاط هنا قبل ال $arr

?>

قمت باضافة الثلاث نقاط لان ال $arr  عبارة عن مصفوفة لذلك اريدها ان تمرر كل معامل على حدى وليس الجميع بنفس الوقت 

اقتباس

 لو سمحتوا هون سطر  الforeach ممكن توضحولي ما المقصد من الكتابة هيك

ال foreach  عبارة عن حلقة تكرارية في لغة ال php  وثمنا بتمرير المصفوفة $numbers اليها والمعامل $number الذي هو عبارة عن عنصر واحد من المصفوفة اي في كل دورة من هذا الحلقة ستأخد رقم من مصفوفة الارقام بالترتيب 

اقتباس

لماذا قمنا  بوضع += 

بكل بساطة هذا طريقة كتابة مختصرة وتعني اجمع المعامل الذي قبل اليساوي مع الذي بعدها ساعطيك مثال للتوضيح 

هذا هو الكود الذي قمت بكتابته 

 $acc += $number;

وهذا ما يعنيه 

  $acc =$acc + $number;

اي انه فقط لمنع التكرار واختصار اكثر ولكنه يؤدي نفس النتيجة 

وبالتوفيق لك 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...