امتحان PHP 2: الشروط، الحلقات، والمصفوفات (10 تمارين مركبة)
امتحان PHP 2: التحكم في التدفق والمصفوفات
اختبر قدرتك على بناء منطق برمجي باستخدام الشروط والحلقات، والتعامل مع هياكل البيانات (المصفوفات).
تمرين 1
الجمل الشرطية (If/Else)
تحقق من الوقت:
- عرف متغيراً `$hour` يمثل الساعة (نظام 24).
- إذا كانت الساعة أقل من 12 اطبع "صباح الخير".
- إذا كانت بين 12 و 18 اطبع "مساء الخير".
- غير ذلك اطبع "تصبح على خير".
الحل
<?php
$hour = 14;
if ($hour < 12) {
echo "صباح الخير";
} elseif ($hour < 18) {
echo "مساء الخير";
} else {
echo "تصبح على خير";
}
?>
تمرين 2
جملة التبديل (Switch)
حدد اللون المفضل:
- عرف متغيراً `$favColor`.
- استخدم `switch` للتحقق من قيمته.
- إذا كان "red" اطبع "أحمر"، "blue" اطبع "أزرق".
- الحالة الافتراضية (default) اطبع "لون آخر".
الحل
<?php
$favColor = "red";
switch ($favColor) {
case "red":
echo "أحمر";
break;
case "blue":
echo "أزرق";
break;
default:
echo "لون آخر";
}
?>
تمرين 3
حلقة التكرار (For Loop)
اطبع جدول الضرب للرقم 5:
- استخدم حلقة `for` من 1 إلى 10.
- في كل دورة، اطبع "5 * i = result".
الحل
<?php
for ($i = 1; $i <= 10; $i++) {
$result = 5 * $i;
echo "5 * $i = $result <br>";
}
?>
تمرين 4
حلقة التكرار (While Loop)
اطبع الأرقام الزوجية:
- عرف متغيراً `$x = 0`.
- استخدم حلقة `while` للاستمرار طالما `$x` أقل من أو يساوي 10.
- اطبع `$x` ثم زده بمقدار 2 في كل دورة.
الحل
<?php
$x = 0;
while ($x <= 10) {
echo "$x <br>";
$x += 2;
}
?>
تمرين 5
المصفوفات المفهرسة (Indexed Arrays)
تعامل مع قائمة سيارات:
- أنشئ مصفوفة `$cars` تحتوي على "Volvo", "BMW", "Toyota".
- اطبع العنصر الثاني في المصفوفة.
- اطبع عدد العناصر في المصفوفة (count).
الحل
<?php
$cars = array("Volvo", "BMW", "Toyota");
echo $cars[1]; // BMW
echo count($cars); // 3
?>
تمرين 6
المصفوفات الترابطية (Associative Arrays)
خزن أعمار الأشخاص:
- أنشئ مصفوفة `$ages` حيث المفتاح هو الاسم والقيمة هي العمر.
- "Peter" => 35, "Ben" => 37, "Joe" => 43.
- اطبع عمر "Ben".
الحل
<?php
$ages = array("Peter" => 35, "Ben" => 37, "Joe" => 43);
echo "Ben is " . $ages['Ben'] . " years old.";
?>
تمرين 7
حلقة Foreach
اطبع عناصر المصفوفة الترابطية:
- استخدم المصفوفة `$ages` من التمرين السابق.
- استخدم `foreach` لطباعة كل اسم وعمره (Key => Value).
- الصيغة: "Key is Value".
الحل
<?php
$ages = array("Peter" => 35, "Ben" => 37, "Joe" => 43);
foreach ($ages as $name => $age) {
echo "$name is $age years old <br>";
}
?>
تمرين 8
المصفوفات متعددة الأبعاد (Multidimensional Arrays)
أنشئ مصفوفة لجدول بيانات:
- مصفوفة `$cars` تحتوي على مصفوفات فرعية.
- كل مصفوفة فرعية تحتوي على: الاسم، المخزون، والمبيعات.
- مثال: `array("Volvo", 22, 18)`.
- اطبع اسم السيارة الأولى ومخزونها.
الحل
<?php
$cars = array(
array("Volvo", 22, 18),
array("BMW", 15, 13)
);
echo $cars[0][0] . ": In stock: " . $cars[0][1];
?>
تمرين 9
ترتيب المصفوفات (Sorting Arrays)
رتب المصفوفات:
- لديك مصفوفة أرقام `$numbers = [4, 2, 8, 6]`.
- رتبها تصاعدياً (sort).
- رتبها تنازلياً (rsort).
- اطبع المصفوفة بعد كل عملية (print_r).
الحل
<?php
$numbers = [4, 2, 8, 6];
sort($numbers);
print_r($numbers);
rsort($numbers);
print_r($numbers);
?>
تمرين 10
التحكم في الحلقة (Break/Continue)
تحكم في تدفق الحلقة:
- في حلقة من 0 إلى 10.
- إذا كان الرقم 4، تخطاه (continue).
- إذا كان الرقم 8، أوقف الحلقة (break).
- اطبع الأرقام.
الحل
<?php
for ($x = 0; $x <= 10; $x++) {
if ($x == 4) {
continue;
}
if ($x == 8) {
break;
}
echo "$x <br>";
}
?>