JavaScript is not enabled!...Please enable javascript in your browser

جافا سكريبت غير ممكن! ... الرجاء تفعيل الجافا سكريبت في متصفحك.

-->
Home

الدرس 7 الموسع: الحلقات (Loops) في PHP

📘 الدرس 7: الحلقات (Loops) في PHP بشكل موسع



الحلقات Loops هي قلب البرمجة الديناميكية. بدل ما تكتب نفس الكود 100 مرة، الحلقة تنفذه لك 100 مرة في 4 أسطر. أي موقع فيه قائمة مقالات، منتجات، تعليقات، أو صفحات ترقيم = يستخدم الحلقات.

💡 قاعدة: إذا لقيت نفسك تنسخ وتلصق الكود أكثر من مرتين، استخدم حلقة فوراً.

🔹 1. حلقة for - للتكرار بعدد محدد

أفضل خيار لما تكون عارف عدد المرات اللي تبي تكرر فيها الكود مسبقاً.

الصيغة: for(البداية; الشرط; الزيادة){ الكود }

مثال 1: طباعة الأعداد من 1 إلى 5

<?php
for($i = 1; $i <= 5; $i++){
  echo "العدد: $i <br>";
}
?>

مثال 2: عرض 10 مقالات حديثة

<?php
for($i = 1; $i <= 10; $i++){
  echo "<h3>المقال رقم $i</h3>";
  echo "<p>هذا محتوى المقال رقم $i</p>";
}
?>

مثال 3: جدول الضرب

<?php
for($i = 1; $i <= 10; $i++){
  echo "5 x $i = ". (5 * $i). "<br>";
}
?>

الاستخدام: ترقيم الصفحات Pagination، عرض نجمة التقييم، إنشاء خيارات Select في النموذج.

🔹 2. حلقة while - للتكرار بشرط

تستمر بالتكرار طالما الشرط صحيح. تستخدمها لما ما تعرف كم مرة بتكرر.

الصيغة: while(الشرط){ الكود }

مثال 1: عد تنازلي

<?php
$i = 5;
while($i >= 1){
  echo "العدد: $i <br>";
  $i--; // مهم جداً عشان ما تدخل في حلقة لا نهائية
}
?>

مثال 2: قراءة بيانات من قاعدة البيانات

<?php
$i = 1;
while($i <= 5){
  echo "المستخدم رقم $i <br>";
  $i++;
}
?>
⚠️ تحذير: لو نسيت تزيد المتغير $i++ بتدخل في حلقة لا نهائية وتعلق الموقع.

🔹 3. حلقة do...while - التنفيذ مرة واحدة على الأقل

نفس while لكن تضمن تنفيذ الكود مرة واحدة حتى لو الشرط خطأ من البداية.

الصيغة: do{ الكود }while(الشرط);

مثال عملي: قائمة انتظار

<?php
$i = 1;
do{
  echo "محاولة الاتصال رقم $i <br>";
  $i++;
}while($i <= 3);
?>

الاستخدام: محاولة الاتصال بقاعدة البيانات، عرض نموذج مرة واحدة على الأقل، قراءة ملف.

🔹 4. حلقة foreach - الأفضل للمصفوفات

أسهل وأسرع طريقة للمرور على عناصر المصفوفة بدون ما تشغل بالك بالفهرس.

الصيغة: foreach($array as $value){ الكود }

مثال 1: عرض قائمة الفواكه

<?php
$fruits = ["تفاح", "موز", "برتقال", "عنب"];
foreach($fruits as $fruit){
  echo "الفاكهة: $fruit <br>";
}
?>

مثال 2: عرض المصفوفة الترابطية مع المفتاح والقيمة

<?php
$user = ["name" => "حسام", "age" => 25, "city" => "صنعاء"];
foreach($user as $key => $value){
  echo ucfirst($key). ": $value <br>";
}
?>

مثال 3: عرض منتجات المتجر

<?php
$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

<?php
for($i = 1; $i <= 10; $i++){
  if($i == 5){
    break; // توقف عند الوصول للرقم 5
  }
  echo $i. "<br>"; // بيطبع 1 2 3 4 فقط
}
?>

مثال: استخدام continue

<?php
for($i = 1; $i <= 5; $i++){
  if($i == 3){
    continue; // تخطى الرقم 3
  }
  echo $i. "<br>"; // بيطبع 1 2 4 5
}
?>

🔹 6. الحلقات المتداخلة Nested Loops

حلقة داخل حلقة. مفيدة للجداول والمصفوفات متعددة الأبعاد.

مثال: جدول الضرب 1-5

<?php
for($i = 1; $i <= 5; $i++){
  for($j = 1; $j <= 5; $j++){
    echo "$i x $j = ". ($i * $j). " | ";
  }
  echo "<br>";
}
?>

مثال: عرض نجوم على شكل مثلث

<?php
for($i = 1; $i <= 5; $i++){
  for($j = 1; $j <= $i; $j++){
    echo "* ";
  }
  echo "<br>";
}
?>

🔹 7. متى تستخدم كل حلقة؟

الحلقةاستخدمها عندمامثال عملي
forتعرف عدد التكرارات مسبقاًعرض 10 مقالات، جدول الضرب
whileلا تعرف عدد التكراراتقراءة ملف حتى النهاية
do...whileتبي تنفيذ مرة واحدة على الأقلمحاولة الاتصال بالسيرفر
foreachعندك مصفوفة وتبي تمر عليهاعرض المنتجات، المستخدمين

🔹 8. مثال عملي شامل: صفحة منتجات كاملة

<?php
$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

author-img

حسام الفقيه

Comments
No comments
Post a Comment
    NameEmailMessage