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

السؤال

نشر (معدل)

كيفية انشاء فنكشن في php تاخذ مجموعة من الارقام وترجع مصفوفة من المربعات لكل رقم.

وهذه محاولتي في الحل 

function s(...$numbers) {
  foreach ($numbers as $n) {$m =$n**2;}
  return $m ;
}
echo s( 3).','; echo s( 5);

 

تم التعديل في بواسطة Hassan Hedr
تنسيق الشيفرة

Recommended Posts

  • 0
نشر

التابع المذكور يقوم بالمرور على الأرقام الممررة له ويحسب مربع كل منها ويخزنه ضمن المتغير m$، الخطأ لديك هو عند تخزين تلك القيمة سيتم مسح القيمة السابقة لها وبالتالي لن نحصل سوى على آخر نتيجة فقط،

بما أن استخدامك للتابع هو فقط لتمرير عدد مفرد يمكن كتابته لإرجاع نتيجة مفردة وليس مصفوفة كالتالي:

function s($number) {
  return $number**2;
}
echo s(3).',';
echo s(5);

// 9, 25

أما في حالة إرجاع مصفوفة حصرًا يجب تغيير طريقة اسنادك للنتيجة لمتغير مصفوفة النتائج وإضافة قوسين مربعين، ويجب تغيير طريقة استعمال المصفوفة باعتبار أنها ترجع مصفوفة وليس عدد مفرد، لتصبح كالتالي:

function s(...$numbers) {
  foreach ($numbers as $n) {
    $m[] = $n**2;
  }
  return $m;
}

foreach(s(3, 5) as $square) {
  echo s($square) . ',';
}

 

  • 0
نشر
بتاريخ 4 دقائق مضت قال اية اية3:

function s(...$numbers) {
  foreach ($numbers as $n) {
    $m[] = $n**2;
  }
  return $m;
}
foreach(s(3, 5) as $square) {
  echo s($square) . ','; 
}

 

 لاحظي أنك تقومين باستدعاء المصفوفة مرة أخرى في جملة الطباعة

echo s($square) . ','; 
     ^^^

سوف نعدل السطر كالتالي

echo $square . ','; 

جربي الأمر مرة أخرى وأخبرينا بالنتيجة

  • 0
نشر
بتاريخ 1 دقيقة مضت قال محمد أبو عواد:

 لاحظي أنك تقومين باستدعاء المصفوفة مرة أخرى في جملة الطباعة


echo s($square) . ','; 
     ^^^

سوف نعدل السطر كالتالي


echo $square . ','; 

جربي الأمر مرة أخرى وأخبرينا بالنتيجة

زبط لكن لم يخرج على شكل مصفوفة []

  • 0
نشر
بتاريخ الآن قال اية اية3:

زبط لكن لم يخرج على شكل مصفوفة []

ما يتم طباعته هي عناصر المصفوفة المسترجعة من الدالة s , اذا بالفعل لدينا مصفوفة , ولكن لا يمكن طباعة المصفوفة الا بالمرور على جميع عناصرها باستخدام حلقات التكرار , استخدمنا حلقة التكرار foreach وقمنا بطباعة عناصر المصفوفة , اذا كنتي تريدين أن يكون الناتج يأخذ شكل المصفوفة فيمكنك فعل ذلك كالتالي

<?php
function s(...$numbers) {
foreach ($numbers as $n) {
$m[] = $n**2;
}
return $m;
}
$result='[';// قمنا بإنشاء متغير واسندنا اليه قيمة نصية قيمتها فقط القوس الواضح أمامك
foreach(s(3, 5) as $square) {
    $result.= $square . ','; // نقوم بإلحاق قيمة العناصر بالمتغير الذي انشأناه
}

$result.=']';// بعد انتهاء حلقة التكرار نقوم بإغلاق القوس
echo $result;// نقوم بطباعة قيمة المتغير الذي أنشأناه
?>

 

  • 0
نشر
بتاريخ 11 ساعات قال اية اية3:

زبط لكن لم يخرج على شكل مصفوفة []

إذا نظرت لناتج التابع s فهو يعيد مصفوفة بنواتج مربعات الأرقام الممررة يمكنك التأكد من ذلك كما يلي

print_r(s(3,5)); // [3, 5] مصفوفة

لكن في حلقة الطباعة نحن نستخدم المصفوفة الناتجة ونمر على عناصرها بشكل مفرد، لذا قيمة square$ ستكون عدد وهو مربع أحد الأعداد

foreach(s(3, 5) as $square) {
  // $square عدد
  echo $square . ',';
}

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...