🚀 احتراف المصفوفات متعددة الأبعاد في PHP (Multidimensional Arrays)
في الدروس السابقة، تعلمت كيف تخزن مجموعة من البيانات في مصفوفة واحدة بسيطة. ولكن ماذا لو كنت بحاجة لتخزين بيانات أكثر تعقيداً؟ مثل جدول يحتوي على أسماء طلاب ودرجاتهم في عدة مواد؟ 🎓
هنا يأتي دور المصفوفات متعددة الأبعاد (Multidimensional Arrays).
ما هي المصفوفات متعددة الأبعاد؟ 🤔
ببساطة شديدة، المصفوفة متعددة الأبعاد هي "مصفوفة بداخلها مصفوفة أخرى". 📦📦
تخيلها كأنها جدول مكون من صفوف وأعمدة. بدلاً من أن يحتوي كل عنصر في المصفوفة على قيمة واحدة (مثل نص أو رقم)، يحتوي كل عنصر على "مصفوفة كاملة" من القيم.
الأكثر شيوعاً هي المصفوفات ثنائية الأبعاد (Two-Dimensional Arrays)، وهي التي تشبه الجدول تماماً.
🛠️ كيف نقوم بإنشاء مصفوفة ثنائية الأبعاد؟
لإنشاء مصفوفة ثنائية الأبعاد، نقوم بتعريف مصفوفة أساسية، ونجعل كل عنصر داخلها عبارة عن مصفوفة أخرى. لنلقِ نظرة على هذا المثال البسيط لتخزين بيانات بعض السيارات:
<?php
// إنشاء مصفوفة ثنائية الأبعاد لتخزين بيانات السيارات
// كل عنصر في المصفوفة الكبيرة هو مصفوفة صغيرة تحتوي على (الماركة، الموديل، السنة)
$cars = array (
array("Toyota", "Camry", "2020"), // العنصر رقم 0
array("Honda", "Civic", "2018"), // العنصر رقم 1
array("Ford", "Mustang", "2022") // العنصر رقم 2
);
?>
شرح الكود:
- أنشأنا مصفوفة اسمها
$cars. - بداخلها وضعنا 3 مصفوفات أخرى.
- كل مصفوفة داخلية تمثل "سيارة واحدة" ببياناتها.
🔑 كيف نصل إلى البيانات داخل المصفوفة؟
للوصول إلى قيمة معينة في مصفوفة ثنائية الأبعاد، نحتاج إلى استخدام مؤشرين (Index) بدلاً من مؤشر واحد:
- المؤشر الأول: يحدد "الصف" (أي مصفوفة داخلية نريد).
- المؤشر الثاني: يحدد "العمود" (أي عنصر داخل تلك المصفوفة).
لنطبق ذلك عملياً:
<?php
$cars = array (
array("Toyota", "Camry", "2020"), // الصف 0
array("Honda", "Civic", "2018"), // الصف 1
array("Ford", "Mustang", "2022") // الصف 2
);
// نريد طباعة كلمة "Civic"
// هي موجودة في الصف رقم 1، وفي العمود رقم 1
echo $cars[1][1]; // المخرجات ستكون: Civic
echo "<br>";
// نريد طباعة سنة صنع سيارة Toyota
// هي موجودة في الصف رقم 0، وفي العمود رقم 2
echo $cars[0][2]; // المخرجات ستكون: 2020
?>
💡 تذكر دائماً: في البرمجة، نبدأ العد من الرقم 0 وليس 1.
🔄 كيف نطبع جميع عناصر المصفوفة متعددة الأبعاد؟
بما أننا نتعامل مع مصفوفة داخل مصفوفة، فإننا نحتاج إلى استخدام حلقتين (Nested Loops) من نوع for لطباعة كافة البيانات. الحلقة الأولى تمر على الصفوف، والحلقة الثانية تمر على الأعمدة داخل كل صف.
شاهد هذا المثال التطبيقي:
<?php
$cars = array (
array("Toyota", "Camry", "2020"),
array("Honda", "Civic", "2018"),
array("Ford", "Mustang", "2022")
);
// الحلقة الأولى للمرور على الصفوف (3 صفوف)
for ($row = 0; $row < 3; $row++) {
// الحلقة الثانية للمرور على الأعمدة داخل كل صف (3 أعمدة)
for ($col = 0; $col < 3; $col++) {
echo $cars[$row][$col] . " ";
}
echo "<br>"; // سطر جديد بعد كل صف
}
?>
ماذا حدث هنا؟
- الحلقة الخارجية (
$row) تبدأ من 0، فتدخل إلى المصفوفة الأولى. - الحلقة الداخلية (
$col) تطبع العناصر (Toyota, Camry, 2020) واحداً تلو الآخر. - ثم تعود الحلقة الخارجية لتنتقل إلى الصف التالي، وهكذا.
📝 ملخص سريع للدرس
- المصفوفة متعددة الأبعاد هي مصفوفة تحتوي على مصفوفات أخرى.
- للوصول إلى قيمة، نستخدم
array[row][column]. - لطباعة كافة البيانات، نستخدم حلقات تكرار متداخلة (Nested Loops).
- هي الوسيلة الأمثل لتمثيل البيانات التي تأتي على شكل جداول.
🎓 اختبر معلوماتك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال