✅ ما هي؟
هي حلقة تكرار (loop) مخصصة فقط للمصفوفات، تُستخدم للمرور على كل عنصر داخل المصفوفة بسهولة وبدون الحاجة لمؤشر أو عدّاد.
🧱 الصيغة العامة:
foreach ($array as $value) {
// الكود الذي يتم تنفيذه لكل عنصر
}
PHPأو إذا أردت الحصول على المفتاح أيضًا:
foreach ($array as $key => $value) {
// الكود باستخدام المفتاح والقيمة
}
PHP🧪 أمثلة عملية مشروحة:
🎯 1. مرور على مصفوفة بسيطة:
$colors = ["red", "green", "blue"];
foreach ($colors as $color) {
echo "اللون: $color <br>";
}
PHP📌 النتيجة:
اللون: red
اللون: green
اللون: blue
PHP🎯 2. المرور على مصفوفة بمفاتيح:
$user = [
"name" => "Yasin",
"age" => 25,
"country" => "Syria"
];
foreach ($user as $key => $value) {
echo "$key : $value <br>";
}
PHP📌 النتيجة:
name : Yasin
age : 25
country : Syria
PHP🧠 فوائد foreach:
✅ لا تحتاج لإنشاء عدّاد يدوي (مثل for).
✅ تحافظ على ترتيب العناصر كما في المصفوفة.
✅ تدعم كل أنواع المصفوفات (عادية، ترابطية، متعددة).
✅ سهلة الفهم للمبتدئين جدًا.
⚠️ محاذير ونصائح:
❌ لا يمكن استخدامها إلا مع المصفوفات أو الكائنات.
❌ لا تعطيك خيار التحكم الكامل مثل break
أو continue
المعقدة (لكنه ممكن ضمن شروط).
✅ إذا أردت التعديل على العناصر داخل المصفوفة نفسها، استخدم &
(تمرير بالمرجع).
مثال للتعديل داخل foreach
:
$nums = [1, 2, 3];
foreach ($nums as &$num) {
$num += 10;
}
print_r($nums); // [11, 12, 13]
PHP⚠️ لا تنسَ فك المرجع بعد الانتهاء لتجنب مشاكل لاحقًا.
🔄 مقارنة سريعة مع for:
المقارنة | foreach | for |
---|---|---|
سهل الاستخدام | ✅ | ❌ |
يحتاج عداد | ❌ | ✅ |
خاص بالمصفوفات | ✅ | ❌ |
مرن مع التعديل | ✅ (مع المرجع) | ✅ |
🧠 تمرين بسيط للمبتدئين:
$students = ["Ali", "Mona", "Khaled"];
foreach ($students as $index => $name) {
echo "الطالب رقم " . ($index + 1) . " هو: $name <br>";
}
PHP أمثلة إضافية على foreach
🧪 مثال 1: مصفوفة من الأرقام — طباعة المربع لكل رقم
$numbers = [1, 2, 3, 4];
foreach ($numbers as $num) {
echo "العدد: $num - المربع: " . ($num * $num) . "<br>";
}
PHP📌 النتيجة:
العدد: 1 - المربع: 1
العدد: 2 - المربع: 4
العدد: 3 - المربع: 9
العدد: 4 - المربع: 16
PHP🧪 مثال 2: مصفوفة ترابطية لأسماء الطلاب ودرجاتهم — استخراج النجاح والرسوب
$students = [
"Ahmad" => 80,
"Sara" => 45,
"Omar" => 90,
"Laila" => 50
];
foreach ($students as $name => $grade) {
if ($grade >= 50) {
echo "$name: ناجح <br>";
} else {
echo "$name: راسب <br>";
}
}
PHP📌 النتيجة:
Ahmad: ناجح
Sara: راسب
Omar: ناجح
Laila: ناجح
PHP🧪 مثال 3: تعديل قيم مصفوفة (زيادة نقاط كل لاعب)
$scores = [
"Ali" => 10,
"Huda" => 15,
"Sami" => 8
];
foreach ($scores as $player => &$score) {
$score += 5;
}
unset($score); // مهم جدًا بعد استخدام المرجع
print_r($scores);
PHP📌 النتيجة:
Array
(
[Ali] => 15
[Huda] => 20
[Sami] => 13
)
PHP🧪 مثال 4: المرور على مصفوفة متعددة الأبعاد (مصغّرة)
$classes = [
["name" => "Ali", "grade" => 80],
["name" => "Maya", "grade" => 92],
["name" => "Tariq", "grade" => 77]
];
foreach ($classes as $student) {
echo $student["name"] . " حصل على: " . $student["grade"] . "<br>";
}
PHP📌 النتيجة:
Ali حصل على: 80
Maya حصل على: 92
Tariq حصل على: 77
PHP🧪 مثال 5: طباعة HTML باستخدام foreach
$items = ["Home", "About", "Contact"];
echo "<ul>";
foreach ($items as $item) {
echo "<li>$item</li>";
}
echo "</ul>";
PHP📌 النتيجة في المتصفح:
<ul>
<li>Home</li>
<li>About</li>
<li>Contact</li>
</ul>
PHP