Menu
flag Ar iconالعربيةdown icon

حلقة for في PHP: الصيغة والمصفوفات وbreak وcontinue

تنفّذ for ($i = 0; $i < 10; $i++) { ... } كتلة عددًا محددًا من المرات: قيمة بداية، وشرط يُفحص قبل كل دورة، وخطوة. يتناول الدرس المرور على مصفوفة بالفهرس، والعد التنازلي، والحلقات المتداخلة، وbreak وcontinue.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

تنفّذ for ($i = 0; $i < 5; $i++) { ... } الكتلة عددًا ثابتًا من المرات. الأجزاء الثلاثة هي البداية ($i = 0، تُنفَّذ مرة واحدة)، والشرط ($i < 5، يُفحص قبل كل دورة)، والخطوة ($i++، تُنفَّذ بعد كل دورة). تنتهي الحلقة حالما يصبح الشرط خاطئًا.

يبقى $i موجودًا بعد الحلقة ويحمل القيمة التي جعلت الشرط خاطئًا (6). ليس في PHP نطاق كتلة لمتغيرات الحلقات.

المرور على مصفوفة بالفهرس

لقائمة مفاتيحها 0, 1, 2 ...، يعمل العداد فهرسًا أيضًا. خزّن count() في متغير أولًا حتى لا تُستدعى من جديد في كل دورة.

يمكن أن يحمل الجزء الأول عدة تعابير مفصولة بفواصل، وهكذا تُضبط $n = count($fruits) مرة واحدة. وعندما لا تحتاج إلا إلى كل قيمة (لا إلى جيرانها)، تكون foreach أقصر، وتعمل أيضًا على المصفوفات التي ليست مفاتيحها من 0 إلى n - 1.

العد التنازلي والخطوة بأكثر من 1

يمكن أن تكون الخطوة أي تعبير: $i-- للعد التنازلي، و$i += 2 لكل عدد ثانٍ، و$i *= 2 لقوى العدد اثنين.

تبني range('a', 'h') المصفوفة ['a', 'b', ... 'h']. ومع range(1, 10) وforeach تحصل على العد نفسه الذي تعطيه حلقة for، مقابل بناء المصفوفة كاملة أولًا.

break وcontinue

تنهي break الحلقة فورًا. وتتخطى continue بقية الدورة الحالية وتقفز إلى الخطوة وإلى فحص الشرط التالي.

في الحلقة الثانية شرط فارغ، أي «صحيح دائمًا»، فتعمل حتى break. وفي الحلقات المتداخلة، تعمل break 2 وcontinue 2 على الحلقة الخارجية، كما يبيّن المثال التالي.

حلقات for متداخلة: جدول الضرب

الحلقة داخل حلقة تنفّذ الحلقة الداخلية كاملة في كل دورة من الخارجية. المخرجات هنا HTML، لذا يعرض تبويب Page جدولًا حقيقيًا.

غيّر $size إلى 12 وشغّله مرة أخرى. صيغة for (...): وendfor; هي الصيغة البديلة التي تُبقي الحلقات مقروءة بين وسوم HTML. وهذا الجدول نفسه مبنيًا نصًا عاديًا، مع break 2 لإيقاف الحلقتين:

أخطاء شائعة: الخطأ بواحد والحلقة اللانهائية

الخطآن الكلاسيكيان في for: استخدام <= مع count() يقرأ عنصرًا واحدًا بعد النهاية، فتبلّغ PHP عنه بـ Warning: Undefined array key 3 وتعامله على أنه null؛ وخطوة لا تحرّك العداد نحو النهاية أبدًا ($i-- حيث قصدت $i++) تُبقي الشرط صحيحًا إلى الأبد.

للحلقات التي لا يمكنك معرفة طولها مسبقًا، مثل القراءة حتى نهاية ملف، تناسب حلقة while أكثر.

الأسئلة الشائعة

كيف أمر على مصفوفة بالفهرس في PHP؟

لقائمة مفاتيحها 0 و1 و2 استخدم for ($i = 0; $i < count($arr); $i++) { echo $arr[$i]; }. وفي معظم الشيفرة تكون foreach ($arr as $i => $value) أبسط، وتعطي الفهرس نفسه، وتعمل أيضًا عندما لا تكون المفاتيح من 0 إلى n ناقص 1.

كيف أخرج من حلقة for في PHP؟

تغادر break; الحلقة فورًا. وداخل حلقات متداخلة، تغادر break 2; الحلقة الداخلية والحلقة المحيطة بها. وتتخطى continue; بقية الدورة الحالية وتنتقل إلى التالية.

كيف أعد تنازليًا بحلقة for في PHP؟

ابدأ بقيمة عالية، وقارن بـ >= وأنقص العداد: for ($i = 10; $i >= 1; $i--) { echo $i; }. ولخطوات غير الواحد، غيّر الجزء الثالث، مثل $i += 2 أو $i -= 5.

متى أستخدم for بدل foreach في PHP؟

استخدم for عندما تعدّ شيئًا (كرّر 5 مرات، الأعداد من 1 إلى 100، كل عنصر ثانٍ) أو تحتاج إلى العنصر التالي أو السابق بالفهرس. واستخدم foreach لزيارة كل عنصر في مصفوفة، خاصة المصفوفات الترابطية التي لا فهرس رقميًا فيها.

رسم توضيحي للغات البرمجة في Coddy

تعلّم البرمجة مع Coddy

ابدأ الآن