Mahmoud Alrashidi نشر 6 فبراير 2021 أرسل تقرير نشر 6 فبراير 2021 مرحباً جميعاً ماهو الفرق بين هاتين الطريقتين في الحلقة for و أيهما أفضل في الإستخدام و لماذا؟ الطريقة الأولى: <?php $salaries = array(2000, 3200, 1500, 1800, 2900); for($i = 0; $i < count($salaries); $i++) { echo '<p>Emp N.'. ($i + 1) .' Salary is: ' . $salaries[$i] .'</p>'; } الطريقة الثانية: <?php $salaries = array(2000, 3200, 1500, 1800, 2900); for($i = 0, $count = count($salaries); $i < $count; $i++) { echo '<p>Emp N.'. ($i + 1) .' Salary is: ' . $salaries[$i] .'</p>'; } هل يُمكن شرح هذه الطريقة لأنها غريبة نوعاً ما. شكراً مُسبقاً. 1 اقتباس
0 Wael Aljamal نشر 6 فبراير 2021 أرسل تقرير نشر 6 فبراير 2021 الشيفرتين البرمجيتين متطابقتين و لهما نفس الغرض و نفس الأداء، الاختلاف هو: عدد مرات استدعاء الدالة count لتحسب عدد عناصر المصفوفة. في الحلقة الأولى: for($i = 0; $i < count($salaries); $i++) تم اسدعاء الدالة count بعدد مرات اختبار الشرط (عدد عناصر المصفوفة) و إن كل منهم يلأخذ وحدة زمنية فقط لحساب عدد العناصر (1)O (وحدة زمنية واحدة) أي أن تكرار استدعاء الدالة لن يؤثر على أداء الحلقة. في الحلقة الثانية: for( $i = 0, $count = count($salaries) ; $i < $count; $i++) $i = 0, $count = count($salaries) نلاحظ أن الجزء الأول من حلقة for تم فيه تعريف متغيرين معاً، عداد الحلقة i و متغير يحوي عدد العناصر count.(وهذا مسموح) قبل الفاصلة المنقوطة التي تشير لبداية جزء الشرط من الحلقة. حيث تم تنفيذ استدعاء الدالة count مرة واحد هنا، أما في باقِ تكرارات الحلقة اعتمدنا على الشرط الموضح في الكود $i < $count - ملاحظة عامة: في بعض لغات البرمجة و عند استدعاء الدالة count تقوم هذه الدالة بالمرور على جميع عناصر المصفوفة و تقوم بعدهم أي أنها ستأخذ وقتا بعدد العناصر وهم عادة N عنصر (غير محدد) حيث نلاحظ أن تكرار الاستدعاء سيؤدي في هذه الحالة لزيادة في عدد العمليات الحسابية و بطئ في البرنامج. في PHP الدالة count تأخذ واحدة زمنية أي تنفيذها سريع و تكرار استدعائها لا يؤثر على البرنامج. 1 اقتباس
السؤال
Mahmoud Alrashidi
مرحباً جميعاً
ماهو الفرق بين هاتين الطريقتين في الحلقة for و أيهما أفضل في الإستخدام و لماذا؟
الطريقة الثانية:
هل يُمكن شرح هذه الطريقة لأنها غريبة نوعاً ما.
شكراً مُسبقاً.
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.