حلقة foreach في PHP
تخيّل أنك تبني صفحة متجر: عندك قائمة منتجات قادمة من قاعدة البيانات وتريد عرضها سطرًا سطرًا.
ممكن تعملها بعداد يدوي، لكن لماذا تتعب نفسك؟ foreach صُممت لهذا المشهد بالضبط.
متى تستخدم foreach في PHP؟
عندما تكون لديك مصفوفة وتريد المرور على عناصرها بسرعة ووضوح. الفكرة الذكية في foreach: أنت تركز على "ماذا أفعل بكل عنصر؟" وتترك تفاصيل العدّ لـ PHP.
الصيغة الأساسية لحلقة foreach في PHP
foreach ($array as $value) {
// كود يتكرر لكل عنصر
}
في كل دورة، $value تأخذ قيمة عنصر جديد من المصفوفة حتى تنتهي العناصر.
مثال foreach في PHP على مصفوفة بسيطة
الكود:
<?php
$colors = ["أحمر", "أخضر", "أزرق", "أصفر"];
foreach ($colors as $color) {
echo "$color <br>";
}
?>
ما يظهر في المتصفح:
أحمر
أخضر
أزرق
أصفر
شرح الكود: في أول دورة تصبح $color = "أحمر"، ثم "أخضر"، ثم "أزرق"... بدون أي عداد يدوي.
أنت كتبت الفكرة مرة واحدة، وPHP كررتها على كل العناصر.
مثال foreach في PHP على المصفوفة الترابطية (Key/Value)
الكود:
<?php
$ages = [
"أحمد" => 25,
"سارة" => 22,
"علي" => 30
];
foreach ($ages as $name => $age) {
echo "$name عمره $age سنة <br>";
}
?>
ما يظهر في المتصفح:
أحمد عمره 25 سنة
سارة عمره 22 سنة
علي عمره 30 سنة
شرح الكود: في كل دورة نحصل على المفتاح في $name والقيمة في $age.
هذا بالضبط ما تحتاجه عند عرض بيانات المستخدمين، الإعدادات، أو نتائج API.
مثال foreach في PHP في سيناريو متجر بسيط
الكود:
<?php
$products = ["Laptop", "Mouse", "Keyboard"];
foreach ($products as $product) {
echo "منتج متاح: $product <br>";
}
?>
ما يظهر في المتصفح:
منتج متاح: Laptop
منتج متاح: Mouse
منتج متاح: Keyboard
هذا المثال نسخة مصغّرة لما يحدث فعلاً في المشاريع: قائمة عناصر تتكرر في الواجهة. اليوم هي مصفوفة ثابتة، وغداً ستكون نتائج من قاعدة بيانات.
الفرق بين foreach و for في PHP
- لا تحتاج عداد يدوي مثل
$i. - لا تحتاج حساب
count()كل مرة. - تقل أخطاء الفهارس وتجاوز حدود المصفوفة.
- الكود يكون أوضح لمن يقرأه لاحقاً.
أخطاء شائعة عند استخدام foreach في PHP
- استخدام foreach على متغير ليس مصفوفة.
- الخلط بين
$valueو$keyفي المصفوفات الترابطية. - كتابة اسم متغير غير واضح يربك القراءة.
تمرين سريع على foreach في PHP
- أنشئ مصفوفة أسماء من 4 عناصر واطبع كل اسم بسطر مستقل.
- أنشئ مصفوفة ترابطية للدول والعواصم واطبع: "عاصمة X هي Y".
- عدّل الإخراج ليظهر قبل كل سطر رمز ✅.
الأسئلة الشائعة — FAQ
متى أستخدم foreach؟
عندما تريد المرور على كل عناصر مصفوفة بسهولة ووضوح.
ما الفرق بين foreach و for؟
for تعتمد على عداد، أما foreach فتتعامل مباشرة مع عناصر المصفوفة.
كيف أقرأ المفتاح والقيمة معاً؟
استخدم: foreach ($array as $key => $value).
هل foreach تعمل مع المصفوفات الترابطية؟
نعم، وهي من أفضل الطرق للتعامل معها.