إنشاء مصفوفة ثنائية الأبعاد
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 27 من 68.
المصفوفة متعددة الأبعاد هي ببساطة مصفوفة تحتوي على مصفوفات أخرى كعناصر لها. النوع الأكثر شيوعاً هو المصفوفة ثنائية الأبعاد (2D array)، والتي يمكنك التفكير فيها كشبكة تحتوي على صفوف وأعمدة، تشبه جدول البيانات أو لوحة الألعاب.
إن إنشاء مصفوفة ثنائية الأبعاد في PHP أمر بسيط—فأنت تقوم ببناء مصفوفة يكون فيها كل عنصر عبارة عن مصفوفة بحد ذاته:
<?php
$gameBoard = [
["", "", ""],
["", "", ""],
["", "", ""]
];
?>يؤدي هذا إلى إنشاء شبكة 3x3 حيث تمثل كل مصفوفة داخلية صفاً، ويمثل كل عنصر داخل تلك المصفوفات عموداً. يمكنك أيضاً إنشاء مصفوفات ثنائية الأبعاد بأنواع بيانات مختلفة:
<?php
$scores = [
[85, 92, 78],
[90, 88, 95],
[76, 84, 89]
];
?>توفر PHP أيضاً دالة مدمجة تسمى array_fill() تتيح لك إنشاء مصفوفة مملوءة بقيمة محددة بسرعة. تأخذ هذه الدالة ثلاثة وسائط: الفهرس الابتدائي، عدد العناصر، والقيمة المراد التعبئة بها:
<?php
// array_fill(الفهرس_الابتدائي, عدد_العناصر, القيمة)
$row = array_fill(0, 3, 0); // [0, 0, 0]
?>يمكنك دمج array_fill() مع نفسها لإنشاء مصفوفة ثنائية الأبعاد بكفاءة. على سبيل المثال، لإنشاء شبكة 3x3 حيث تبدأ كل خلية بـ 0:
<?php
$grid = array_fill(0, 3, array_fill(0, 3, 0));
// النتيجة: مصفوفة 3x3 حيث كل عنصر هو 0
?>تعد المصفوفات متعددة الأبعاد مفيدة للغاية لتنظيم البيانات المهيكلة مثل لوحات الألعاب، أو جداول المعلومات، أو أي سيناريو تحتاج فيه إلى تمثيل البيانات في تنسيق شبكي. فهي توفر طريقة طبيعية للتعامل مع الصفوف والأعمدة من المعلومات المرتبطة.
التحدي
سهلستتلقى ثلاثة مدخلات تمثل الأبعاد والقيمة الأولية لمصفوفة ثنائية الأبعاد: عدد الصفوف، وعدد الأعمدة، وقيمة لملء كل موضع. اقرأ هذه المدخلات، وأنشئ مصفوفة ثنائية الأبعاد بالأبعاد المحددة حيث يتم تعيين كل عنصر إلى القيمة المعطاة، واطبع المصفوفة باستخدام print_r().
تنسيق الإدخال:
- السطر الأول: عدد الصفوف (عدد صحيح)
- السطر الثاني: عدد الأعمدة (عدد صحيح)
- السطر الثالث: القيمة الأولية لكل عنصر (سلسلة نصية)
المخرجات المتوقعة: المصفوفة ثنائية الأبعاد التي تم إنشاؤها معروضة باستخدام print_r()
جرّب بنفسك
<?php
// قراءة المدخلات
$rows = intval(fgets(STDIN));
$columns = intval(fgets(STDIN));
$value = trim(fgets(STDIN));
// TODO: اكتب كودك أدناه لإنشاء الـ 2D array
// طباعة النتيجة
print_r($array);
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1الدوال المتقدمة
الدوال المجهولةالـ Closures وكلمة 'use'دوال السهمدوال الـ Callbackاستخدام 'call_user_func'دوال المتغيراتالتمرير بالمرجعالدوال العوديةمراجعة: مزيج الدوال4المصفوفات متعددة الأبعاد
إنشاء مصفوفة ثنائية الأبعادالوصول إلى عناصر المصفوفة ثنائية الأبعادتعديل عناصر المصفوفة ثنائية الأبعادالتكرار باستخدام الحلقات المتداخلةالمصفوفات الترابطية ثنائية الأبعادمراجعة: تمرين الشبكة البسيطة2معالجة المصفوفات المتقدمة
الإضافة باستخدام 'array_push'الحذف باستخدام 'array_pop'الإضافة باستخدام 'array_unshift'الحذف باستخدام 'array_shift'دمج المصفوفات المفهرسةدمج المصفوفات الترابطيةالاستخراج باستخدام 'array_slice'القيم باستخدام 'in_array'المفاتيح باستخدام 'array_search'مراجعة: تمرين قائمة التشغيل3ترتيب المصفوفات
ترتيب المصفوفات المفهرسة تصاعدياًترتيب المصفوفات المفهرسة تنازلياًترتيب المصفوفات الترابطية حسب القيمةترتيب المصفوفات الترابطية حسب المفتاحالترتيب بالترتيب الطبيعيالترتيب المخصص باستخدام 'usort'مراجعة: ترتيب لوحة المتصدرين