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

السؤال

نشر

مرحباً جميعاً

ماهو الفرق بين هاتين الطريقتين في الحلقة 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>';
    }

    هل يُمكن شرح هذه الطريقة لأنها غريبة نوعاً ما.

شكراً مُسبقاً.

Recommended Posts

  • 0
نشر

الشيفرتين البرمجيتين متطابقتين و لهما نفس الغرض و نفس الأداء، الاختلاف هو: عدد مرات استدعاء الدالة 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 تأخذ واحدة زمنية أي تنفيذها سريع و تكرار استدعائها لا يؤثر على البرنامج.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...