في هذا الدرس 6تصفّح المواضيع
عندما تعرف مسبقاً عدد مرات التكرار المطلوبة، تُعد حلقة for أكثر تنظيماً وأماناً من حلقة while؛ لأنها تجمع عناصر التحكم الثلاثة (التهيئة، والشرط، والتحديث) في سطر واحد مفصول بفاصلتين منقوطتين: for (init; condition; step) { ... }، مما يمنع نسيان تحديث العداد:
<?php
for ($level = 1; $level <= 4; $level++) {
echo "Unlocked Level #" . $level . "\n";
}
يساعدك فهم الترتيب الزمني الدقيق لتنفيذ المراحل الثلاث داخل for ($init; $cond; $step) على تتبع أي حلقة بسهولة:
- مرحلة التهيئة (
$init): تُنفذ مرة واحدة فقط عند دخول الحلقة لأول مرة. - مرحلة فحص الشرط (
$cond): تُفحص قبل كل دورة؛ فإذا كانت النتيجةtrueيُنفذ جسم الحلقة، وإذا كانتfalseتتوقف الحلقة فوراً. - مرحلة الخطوة (
$step): تُنفذ في نهاية كل دورة بعد اكتمال جسم الحلقة وقبل إعادة فحص الشرط للدورة التالية.
<?php
$sum = 0;
for ($num = 1; $num <= 5; $num++) {
$sum += $num;
}
echo "Sum of 1..5 is: " . $sum;
لا تقتصر المرحلة الثالثة في حلقة for على الزيادة بمقدار واحد ($i++)؛ بل يمكنك العد التنازلي باستخدام $i-- مع شرط >=، أو القفز بخطوات مخصصة مثل $i += 5 أو مضاعفة الرقم عبر $i *= 2:
<?php
// Countdown by 10s
for ($sec = 30; $sec >= 10; $sec -= 10) {
echo "T-minus " . $sec . " seconds\n";
}
echo "Launch!";
يتيح وضع حلقة for داخل حلقة for أخرى بناء الحلقات المتداخلة (Nested Loops) المستخدمة في توليد الجداول ثنائية الأبعاد والشبكات. واحرص دائماً على اختيار اسم عداد مختلف لكل حلقة (مثل $row للخارجية و$col للداخلية) لمنع تداخل العدادين:
<?php
for ($row = 1; $row <= 3; $row++) {
for ($col = 1; $col <= 3; $col++) {
echo ($row * $col) . "\t";
}
echo "\n";
}
نظراً لأن تعبير الشرط الأوسط في حلقة for يُفحص قبل كل دورة، تجنب استدعاء دوال مثل strlen($text) مباشرة داخل خانة الشرط حتى لا يُعاد تشغيل الدالة في كل دورة؛ بل خزّن الحد الأقصى في متغير مرة واحدة في مرحلة التهيئة لتحقيق أعلى أداء:
<?php
$codeWord = "CLOSETAG";
for ($i = 0, $len = strlen($codeWord); $i < $len; $i++) {
echo "Char #" . ($i + 1) . ": " . substr($codeWord, $i, 1) . "\n";
}
يقارن الجدول المرجعي التالي بين حلقة for وحلقة while لاختيار البنية الأنسب لكل حالة:
| وجه المقارنة | حلقة for ($init; $cond; $step) | حلقة while ($cond) |
|---|---|---|
| الاستخدام الأمثل | عدد دورات محدد أو نطاق رقمي معروف مسبقاً | شرط ديناميكي غير معروف عدد دوراته مسبقاً |
| موضع عناصر التحكم | مجتمعة بالكامل في سطر رأس الحلقة | موزعة قبل الحلقة وداخل جسمها |
| احتمال نسيان تحديث العداد | منخفض جداً لوجود الخطوة في الرأس | أعلى إذا نسي المبرمج تحديث المتغير بالداخل |
| صيغة القوالب البديلة | for (...): ... endfor; | while (...): ... endwhile; |
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
أتقنت في هذا الدرس تشريح حلقة for بمراحلها الثلاث (التهيئة والشرط والخطوة)، والعد التنازلي والقفزات المخصصة، وبناء الحلقات المتداخلة، وتحسين الأداء بتخزين حد التكرار مسبقاً. الخطوة التالية: انتقل الآن إلى الدرس التاسع عشر «التحكم في مسار الحلقات عبر break و continue في PHP» لإيقاف الحلقات مبكراً أو تخطي دورات محددة.
سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.
المصطلحات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 For Loop حلقة for
- تعلّم حلقة التكرار المحددة for في PHP بأسلوب PHP 8 الحديث مع أمثلة عملية وتطبيقات تفاعلية.
- للمراجعة
- 02 Anatomy of PHP for Loop تشريح حلقة التكرار المحددة for
- المفهوم الأساسي لقسم تشريح حلقة التكرار المحددة for في لغة PHP الحديثة.
- للمراجعة
- 03 Init Condition and Step Phases مراحل التهيئة والشرط والخطوة
- الصياغة البرمجية والتطبيق العملي المباشر لقسم مراحل التهيئة والشرط والخطوة.
- للمراجعة
- 04 Counting Backward and Custom Steps العد التنازلي والقفزات المخصصة
- قواعد التحقق وأفضل الممارسات القياسية الخاصة بقسم العد التنازلي والقفزات المخصصة.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
الاختصارات4
راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.
- 01 PHP PHP
- PHP: Hypertext Preprocessor
- لغة البرمجة النصية على جانب الخادم لبناء تطبيقات الويب الديناميكية وواجهات البرمجة.
- للمراجعة
- 02 CLI CLI
- Command-Line Interface
- واجهة سطر الأوامر التي تتيح تشغيل ملفات PHP مباشرة عبر الطرفية.
- للمراجعة
- 03 FPM FPM
- FastCGI Process Manager
- مدير عمليات FastCGI عالي الأداء لمعالجة طلبات خادم الويب في PHP.
- للمراجعة
- 04 HTML HTML
- HyperText Markup Language
- لغة الترميز القياسية التي يولدها محرك PHP ويرسلها إلى متصفح العميل بعد التنفيذ.
- للمراجعة
لا توجد بطاقات تطابق البحث والتصفية.
اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.
مهامك قبل الاختبار
خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.
-
أنشئ ملف PHP محلياً ونفّذ المثال البرمجي المشروح في قسم تشريح حلقة التكرار المحددة for للتحقق من المخرجات.
-
بدّل بين الحالات الثلاث في المحاكي التفاعلي ضمن قسم مراحل التهيئة والشرط والخطوة وقارن مخرجات التنفيذ.
تأشير المهمة إقرار منك بإتمامها، وليس تصحيحًا آليًا للكود. يُحفظ تقدمك في حسابك.
اختبر فهمك.
ووصلها للإتقان.
كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.
أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.
الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.
لمحة عن التحدي8 أسئلة تنتظرك +
أي علامة ترقيم تُستخدم للفصل بين التعبيرات الثلاثة داخل رأس حلقة for ($init; $cond; $step) في PHP؟
تفصل الفاصلة المنقوطة (;) بين مراحل التهيئة والشرط والخطوة داخل رأس حلقة for.
كم مرة يتم تنفيذ تعبير التهيئة الأول ($i = 1) خلال دورة حياة الحلقة for ($i = 1; $i <= 10; $i++) بالكامل؟
تُنفذ مرحلة التهيئة مرة واحدة فقط عند بدء الحلقة قبل أول فحص للشرط.
أي رأس حلقة for مما يلي يعد تنازلياً بشكل صحيح من الرقم 5 نزولاً إلى 1؟
تبدأ القيمة من 5، وتستمر طالما $i >= 1، مع إنقاص العداد بـ $i--.
إذا كانت حلقة for الخارجية تدور 4 مرات، وبداخلها حلقة for داخلية تدور 3 مرات في كل دورة خارجية، فكم إجمالي مرات تنفيذ جسم الحلقة الداخلية؟
حاصل ضرب 4 دورات خارجية في 3 دورات داخلية يساوي 12 مرة تنفيذ.
يساعد تخزين الحد الأقصى المحسوب (مثل $len = strlen($str)) مرة واحدة في مرحلة التهيئة على تجنب إعادة استدعاء الدالة في كل دورة من دورات حلقة for.
صواب؛ لأن التهيئة تعمل مرة واحدة بينما يُفحص الشرط قبل كل دورة.
عند كتابة حلقات for متداخلة، يُنصح باستخدام نفس اسم متغير العداد ($i) للحلقتين الخارجية والداخلية معاً.
خطأ؛ فاستخدام نفس متغير العداد في حلقتين متداخلتين يفسد عداد الحلقة الخارجية.
أي كلمة محجوزة تُغلق صيغة القوالب البديلة for ($i = 1; $i <= 3; $i++): في لغة PHP؟
تُغلق صيغة القوالب البديلة لحلقة for بالكلمة المحجوزة endfor;.
اختر جميع العبارات الصحيحة حول حلقة for في PHP:
راجع ترتيب تنفيذ المراحل الثلاث والقفزات المخصصة ومتى نختار for.