/ دورة PHP الشاملة
0/13 مكتملة
🔁 الدرس 5 من 13

الحلقات التكرارية

تكرار الكود بذكاء

🕐 30-45 دقيقة 📝 5 أسئلة 💻 3 أمثلة برمجية

حلقة for

حلقة for هي الأكثر استخداماً عندما تعرف عدد مرات التكرار مسبقاً.

الهيكل: for (تهيئة; شرط; خطوة) { ... }
  • التهيئة: تنفذ مرة واحدة في البداية
  • الشرط: يُفحص قبل كل تكرار
  • الخطوة: تنفذ بعد كل تكرار
PHP
<?php
// عد من 1 إلى 10
for ($i = 1; $i <= 10; $i++) {
    echo "$i ";
}
echo "<br>";

// جدول الضرب
echo "<br>جدول ضرب 5:<br>";
for ($i = 1; $i <= 10; $i++) {
    echo "5 × $i = " . (5 * $i) . "<br>";
}

// عد تنازلي
echo "<br>عد تنازلي: ";
for ($i = 10; $i >= 1; $i--) {
    echo "$i ";
}

// حلقات متداخلة (Nested)
echo "<br><br>مثلث النجوم:<br>";
for ($i = 1; $i <= 5; $i++) {
    for ($j = 1; $j <= $i; $j++) {
        echo "★ ";
    }
    echo "<br>";
}
?>
الناتج المتوقع
1 2 3 4 5 6 7 8 9 10 جدول ضرب 5: 5 × 1 = 5 ... عد تنازلي: 10 9 8 7 6 5 4 3 2 1 مثلث النجوم: ★ ★ ★ ...

حلقة while و do-while

while تكرر طالما الشرط صحيح. لا تحتاج أن تعرف عدد التكرارات مسبقاً.

do-while: الفرق الوحيد أن الكود ينفذ مرة واحدة على الأقل قبل فحص الشرط.

تحذير: احذر من الحلقة اللانهائية! تأكد دائماً أن الشرط سيصبح false في مرحلة ما.
PHP
<?php
// while: كلمات كلود
$word = 1;
$total = 0;
while ($total < 100) {
    $total += $word * 2;
    $word++;
}
echo "وصلنا لـ 100 بعد $word كلمة<br>";

// قراءة أرقام حتى الصفر (محاكاة)
$numbers = [7, 3, 9, 0]; // 0 = إيقاف
$i = 0;
$sum = 0;
while ($numbers[$i] != 0) {
    $sum += $numbers[$i];
    $i++;
}
echo "مجموع الأرقام: $sum<br>";

// do-while: ينفذ مرة على الأقل
$attempt = 0;
do {
    $attempt++;
    $password = ($attempt == 3) ? "secret" : "wrong";
} while ($password != "secret");

echo "نجح الدخول في المحاولة: $attempt";
?>
الناتج المتوقع
وصلنا لـ 100 بعد 8 كلمة مجموع الأرقام: 19 nجح الدخول في المحاولة: 3

foreach و break/continue

foreach مصممة خصيصاً للتعامل مع المصفوفات. أسهل وأوضح من for مع المصفوفات.

break: يوقف الحلقة تماماً.
continue: يتجاوز التكرار الحالي ويكمل للتالي.
PHP
<?php
// foreach مع مصفوفة مفهرسة
$fruits = ["تفاح", "موز", "برتقال", "عنب"];
echo "الفواكه:<br>";
foreach ($fruits as $fruit) {
    echo "- $fruit<br>";
}

// foreach مع مصفوفة ترابطية
$student = [
    "name"  => "أحمد",
    "grade" => 92,
    "city"  => "القاهرة"
];
echo "<br>بيانات الطالب:<br>";
foreach ($student as $key => $value) {
    echo "$key: $value<br>";
}

// break: إيقاف عند إيجاد القيمة
$numbers = [3, 7, 2, 9, 4, 1];
echo "<br>البحث عن أول رقم > 8: ";
foreach ($numbers as $num) {
    if ($num > 8) {
        echo "وجدناه: $num";
        break;
    }
}

// continue: تجاوز الأرقام الزوجية
echo "<br>الأرقام الفردية: ";
for ($i = 1; $i <= 10; $i++) {
    if ($i % 2 == 0) continue;
    echo "$i ";
}
?>
الناتج المتوقع
الفواكه: - تفاح - موز - برتقال - عنب بيانات الطالب: name: أحمد ... البحث عن أول رقم > 8: وجدناه: 9 الأرقام الفردية: 1 3 5 7 9
🧠

اختبر فهمك — الحلقات التكرارية

5/5 للمتابعة
السؤال 1
ما الحلقة المناسبة عندما لا نعرف عدد مرات التكرار مسبقاً؟
السؤال 2
ما الفرق بين while و do-while؟
السؤال 3
ما دور كلمة continue داخل حلقة؟
السؤال 4
ما الحلقة المصممة خصيصاً لتكرار المصفوفات؟
السؤال 5
ما نتيجة: for($i=0;$i<3;$i++) echo $i; ؟