📚 الدرس 7 من 13
المصفوفات (Arrays)
تخزين مجموعات من البيانات
أنواع المصفوفات
المصفوفة تخزن مجموعة من القيم في متغير واحد. في PHP هناك ثلاثة أنواع:
1. المصفوفة المفهرسة (Indexed Array): مفاتيحها أرقام تبدأ من 0 تلقائياً.
2. المصفوفة الترابطية (Associative Array): مفاتيحها نصوص تحددها أنت. أشبه بالقاموس.
3. المصفوفة متعددة الأبعاد (Multidimensional): مصفوفة داخل مصفوفة — مثالية لتمثيل البيانات الجدولية.
1. المصفوفة المفهرسة (Indexed Array): مفاتيحها أرقام تبدأ من 0 تلقائياً.
2. المصفوفة الترابطية (Associative Array): مفاتيحها نصوص تحددها أنت. أشبه بالقاموس.
3. المصفوفة متعددة الأبعاد (Multidimensional): مصفوفة داخل مصفوفة — مثالية لتمثيل البيانات الجدولية.
PHP
<?php
// 1. مصفوفة مفهرسة
$colors = ["أحمر", "أخضر", "أزرق"];
echo $colors[0] . "<br>"; // أحمر (يبدأ من 0)
echo $colors[2] . "<br>"; // أزرق
// إضافة عناصر
$colors[] = "أصفر"; // إضافة في النهاية
array_push($colors, "بنفسجي");
echo count($colors) . " ألوان<br>";
// 2. مصفوفة ترابطية
$student = [
"name" => "أحمد",
"age" => 20,
"grade" => 95,
"city" => "القاهرة"
];
echo $student["name"] . " عمره " . $student["age"] . "<br>";
echo "تقديره: " . $student["grade"] . "<br>";
// تعديل قيمة
$student["grade"] = 98;
// 3. مصفوفة متعددة الأبعاد
$class = [
["name" => "أحمد", "score" => 95],
["name" => "فاطمة", "score" => 88],
["name" => "محمود", "score" => 92],
];
echo "<br>نتائج الفصل:<br>";
foreach ($class as $s) {
echo $s["name"] . ": " . $s["score"] . "<br>";
}
?>
الناتج المتوقع
أحمر
أزرق
5 ألوان
أحمد عمره 20
تقديره: 95
نتائج الفصل:
أحمد: 95
فاطمة: 88
محمود: 92دوال المصفوفات المهمة
PHP توفر عشرات الدوال الجاهزة للتعامل مع المصفوفات:
| الدالة | الوظيفة |
|---|---|
| count() | عدد العناصر |
| array_push() | إضافة في النهاية |
| array_pop() | حذف من النهاية |
| array_shift() | حذف من البداية |
| array_unshift() | إضافة في البداية |
| array_merge() | دمج مصفوفتين |
| array_search() | البحث عن قيمة |
| in_array() | هل القيمة موجودة؟ |
| sort() / rsort() | ترتيب تصاعدي/تنازلي |
| array_map() | تطبيق دالة على كل عنصر |
| array_filter() | تصفية العناصر |
PHP
<?php
$nums = [5, 2, 8, 1, 9, 3, 7];
// ترتيب
sort($nums);
echo implode(", ", $nums) . "<br>"; // 1,2,3,5,7,8,9
// البحث
echo in_array(8, $nums) ? "8 موجود
" : "غير موجود
";
echo array_search(8, $nums) . "<br>"; // موضع 8
// array_map: تطبيق دالة على كل عنصر
$doubled = array_map(fn($n) => $n * 2, $nums);
echo implode(", ", $doubled) . "<br>"; // 2,4,6,10,14,16,18
// array_filter: تصفية
$evens = array_filter($nums, fn($n) => $n % 2 == 0);
echo implode(", ", $evens) . "<br>"; // 2,8
// array_reduce: تجميع
$sum = array_reduce($nums, fn($carry, $n) => $carry + $n, 0);
echo "المجموع: $sum<br>"; // 35
// دمج وشرائح
$a = [1, 2, 3];
$b = [4, 5, 6];
$merged = array_merge($a, $b);
$slice = array_slice($merged, 2, 3); // ابدأ من index 2، خذ 3
echo implode(", ", $slice); // 3,4,5
?>
الناتج المتوقع
1, 2, 3, 5, 7, 8, 9
8 موجود
6
2, 4, 6, 10, 14, 16, 18
2, 8
المجموع: 35
3, 4, 5🧠
اختبر فهمك — المصفوفات (Arrays)
5/5 للمتابعةالسؤال 1
من أي رقم تبدأ فهرسة المصفوفة المفهرسة في PHP؟
السؤال 2
ما دالة حذف آخر عنصر من مصفوفة؟
السؤال 3
ما الفرق بين in_array() و array_search()؟
السؤال 4
ما دالة دمج عناصر مصفوفة في نص بفاصل معين؟
السؤال 5
ما وظيفة array_map()؟