Loop Foreach

✅ ما هي؟

هي حلقة تكرار (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:
المقارنةforeachfor
سهل الاستخدام
يحتاج عداد
خاص بالمصفوفات
مرن مع التعديل✅ (مع المرجع)
🧠 تمرين بسيط للمبتدئين:
$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