📘 الدرس 7: الحلقات (Loops) في PHP بشكل موسع
![]() |
الحلقات Loops هي قلب البرمجة الديناميكية. بدل ما تكتب نفس الكود 100 مرة، الحلقة تنفذه لك 100 مرة في 4 أسطر. أي موقع فيه قائمة مقالات، منتجات، تعليقات، أو صفحات ترقيم = يستخدم الحلقات.
🔹 1. حلقة for - للتكرار بعدد محدد
أفضل خيار لما تكون عارف عدد المرات اللي تبي تكرر فيها الكود مسبقاً.
الصيغة: for(البداية; الشرط; الزيادة){ الكود }
مثال 1: طباعة الأعداد من 1 إلى 5
for($i = 1; $i <= 5; $i++){
echo "العدد: $i <br>";
}
?>
مثال 2: عرض 10 مقالات حديثة
for($i = 1; $i <= 10; $i++){
echo "<h3>المقال رقم $i</h3>";
echo "<p>هذا محتوى المقال رقم $i</p>";
}
?>
مثال 3: جدول الضرب
for($i = 1; $i <= 10; $i++){
echo "5 x $i = ". (5 * $i). "<br>";
}
?>
الاستخدام: ترقيم الصفحات Pagination، عرض نجمة التقييم، إنشاء خيارات Select في النموذج.
🔹 2. حلقة while - للتكرار بشرط
تستمر بالتكرار طالما الشرط صحيح. تستخدمها لما ما تعرف كم مرة بتكرر.
الصيغة: while(الشرط){ الكود }
مثال 1: عد تنازلي
$i = 5;
while($i >= 1){
echo "العدد: $i <br>";
$i--; // مهم جداً عشان ما تدخل في حلقة لا نهائية
}
?>
مثال 2: قراءة بيانات من قاعدة البيانات
$i = 1;
while($i <= 5){
echo "المستخدم رقم $i <br>";
$i++;
}
?>
$i++ بتدخل في حلقة لا نهائية وتعلق الموقع.
🔹 3. حلقة do...while - التنفيذ مرة واحدة على الأقل
نفس while لكن تضمن تنفيذ الكود مرة واحدة حتى لو الشرط خطأ من البداية.
الصيغة: do{ الكود }while(الشرط);
مثال عملي: قائمة انتظار
$i = 1;
do{
echo "محاولة الاتصال رقم $i <br>";
$i++;
}while($i <= 3);
?>
الاستخدام: محاولة الاتصال بقاعدة البيانات، عرض نموذج مرة واحدة على الأقل، قراءة ملف.
🔹 4. حلقة foreach - الأفضل للمصفوفات
أسهل وأسرع طريقة للمرور على عناصر المصفوفة بدون ما تشغل بالك بالفهرس.
الصيغة: foreach($array as $value){ الكود }
مثال 1: عرض قائمة الفواكه
$fruits = ["تفاح", "موز", "برتقال", "عنب"];
foreach($fruits as $fruit){
echo "الفاكهة: $fruit <br>";
}
?>
مثال 2: عرض المصفوفة الترابطية مع المفتاح والقيمة
$user = ["name" => "حسام", "age" => 25, "city" => "صنعاء"];
foreach($user as $key => $value){
echo ucfirst($key). ": $value <br>";
}
?>
مثال 3: عرض منتجات المتجر
$products = [
["name" => "لابتوب", "price" => 3000],
["name" => "ماوس", "price" => 50],
["name" => "كيبورد", "price" => 100]
];
foreach($products as $product){
echo "<h3>". $product["name"]. "</h3>";
echo "<p>السعر: ". $product["price"]. " ريال</p>";
}
?>
الاستخدام: عرض المنتجات، المقالات، التعليقات، نتائج البحث من قاعدة البيانات.
🔹 5. التحكم في الحلقات: break و continue
| الأمر | الوظيفة | المثال |
|---|---|---|
break | يخرج من الحلقة فوراً | لو وصلت لشرط معين أوقف |
continue | يتخطى التكرار الحالي ويكمل | تجاوز عنصر معين |
مثال: استخدام break
for($i = 1; $i <= 10; $i++){
if($i == 5){
break; // توقف عند الوصول للرقم 5
}
echo $i. "<br>"; // بيطبع 1 2 3 4 فقط
}
?>
مثال: استخدام continue
for($i = 1; $i <= 5; $i++){
if($i == 3){
continue; // تخطى الرقم 3
}
echo $i. "<br>"; // بيطبع 1 2 4 5
}
?>
🔹 6. الحلقات المتداخلة Nested Loops
حلقة داخل حلقة. مفيدة للجداول والمصفوفات متعددة الأبعاد.
مثال: جدول الضرب 1-5
for($i = 1; $i <= 5; $i++){
for($j = 1; $j <= 5; $j++){
echo "$i x $j = ". ($i * $j). " | ";
}
echo "<br>";
}
?>
مثال: عرض نجوم على شكل مثلث
for($i = 1; $i <= 5; $i++){
for($j = 1; $j <= $i; $j++){
echo "* ";
}
echo "<br>";
}
?>
🔹 7. متى تستخدم كل حلقة؟
| الحلقة | استخدمها عندما | مثال عملي |
|---|---|---|
for | تعرف عدد التكرارات مسبقاً | عرض 10 مقالات، جدول الضرب |
while | لا تعرف عدد التكرارات | قراءة ملف حتى النهاية |
do...while | تبي تنفيذ مرة واحدة على الأقل | محاولة الاتصال بالسيرفر |
foreach | عندك مصفوفة وتبي تمر عليها | عرض المنتجات، المستخدمين |
🔹 8. مثال عملي شامل: صفحة منتجات كاملة
$products = [
["name" => "لابتوب", "price" => 3000, "stock" => 5],
["name" => "ماوس", "price" => 50, "stock" => 0],
["name" => "كيبورد", "price" => 100, "stock" => 10]
];
echo "<h2>قائمة المنتجات</h2>";
foreach($products as $product){
// تخطى المنتجات الغير متوفرة
if($product["stock"] == 0){
continue;
}
echo "<div style='border:1px solid #ddd; padding:10px; margin:10px 0;'>";
echo "<h3>". $product["name"]. "</h3>";
echo "<p>السعر: ". $product["price"]. " ريال</p>";
echo "<p>الكمية: ". $product["stock"]. "</p>";
echo "</div>";
}
?>
foreach أسرع من for مع المصفوفات الكبيرة. واستخدم break و continue لتقليل التكرارات الغير ضرورية.
1. استخدم
for للتكرار بعدد محدد2. استخدم
while للتكرار بشرط غير معروف3. استخدم
foreach للمصفوفات - الأسرع والأسهل4. تجنب الحلقات اللانهائية بالتأكد من زيادة المتغير
5. الحلقات المتداخلة قوية لكن لا تكثر منها عشان الأداء
© جميع الحقوق محفوظة - مدونة الحسام | al-hassam.blogspot.com
