المصفوفات الترابطية ثنائية الأبعاد
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 31 من 68.
بينما كنت تعمل مع المصفوفات ثنائية الأبعاد (2D arrays) باستخدام الفهارس الرقمية، يمكنك أيضاً إنشاء بيانات أكثر تنظيماً باستخدام المصفوفات الترابطية (associative arrays) على كل من المستوى الرئيسي وضمن المصفوفات المتداخلة. يستخدم هذا النهج مفاتيح نصية بدلاً من الأرقام، مما يجعل بياناتك أكثر وصفاً وأسهل في الفهم.
إليك كيفية إنشاء مصفوفة ترابطية ثنائية الأبعاد (2D associative array) حيث يمتلك كل عنصر مفاتيح نصية ذات معنى:
<?php
$students = [
"alice" => [
"name" => "Alice Johnson",
"grade" => 92
],
"bob" => [
"name" => "Bob Smith",
"grade" => 87
],
"charlie" => [
"name" => "Charlie Brown",
"grade" => 95
]
];
?>يمكنك أيضاً الجمع بين الأساليب، باستخدام الفهارس الرقمية للمصفوفة الرئيسية مع الاحتفاظ بالمصفوفات الترابطية بداخلها:
<?php
$users = [
["username" => "john_doe", "email" => "john@example.com"],
["username" => "jane_smith", "email" => "jane@example.com"]
];
?>هذا الهيكل قوي للغاية لتنظيم البيانات المعقدة مثل ملفات تعريف المستخدمين، أو كتالوجات المنتجات، أو أي سيناريو تحتاج فيه إلى تخزين خصائص متعددة ذات صلة لكل عنصر. تجعل المفاتيح النصية (string keys) كودك يوثق نفسه بنفسه وأسهل بكثير في الصيانة من تذكر المواقع الرقمية.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلستتلقى مدخلاً واحداً: مصفوفة ترابطية ثنائية الأبعاد تمثل مخزون المنتجات بتنسيق JSON. كل منتج له معرف منتج فريد كمفتاح، والقيمة هي مصفوفة ترابطية تحتوي على "name" و "price" الخاص بالمنتج. اقرأ المدخلات، وقم بتحويل سلسلة JSON إلى مصفوفة ترابطية ثنائية الأبعاد، وقم بالمرور على جميع المنتجات، واطبع معلومات كل منتج بالتنسيق التالي: ID: [product_id] - Name: [name] - Price: $[price]
يجب طباعة كل منتج في سطر منفصل.
تنسيق المدخلات: سطر واحد يحتوي على كائن JSON يمثل مخزون المنتجات (مثال: {"P001":{"name":"Laptop","price":999.99},"P002":{"name":"Mouse","price":25.50},"P003":{"name":"Keyboard","price":75.00}})
المخرجات المتوقعة: طباعة كل منتج في سطر منفصل بالتنسيق ID: [product_id] - Name: [name] - Price: $[price]
ورقة مرجعية
يمكنك إنشاء مصفوفات ترابطية ثنائية الأبعاد باستخدام مفاتيح نصية على كل من المستوى الرئيسي وداخل المصفوفات المتداخلة:
<?php
$students = [
"alice" => [
"name" => "Alice Johnson",
"grade" => 92
],
"bob" => [
"name" => "Bob Smith",
"grade" => 87
]
];
?>يمكنك أيضاً المزج بين الأساليب، باستخدام فهارس رقمية للمصفوفة الرئيسية مع مصفوفات ترابطية بداخلها:
<?php
$users = [
["username" => "john_doe", "email" => "john@example.com"],
["username" => "jane_smith", "email" => "jane@example.com"]
];
?>تجعل المفاتيح النصية بياناتك ذاتية التوثيق وأسهل في الصيانة من المواقع الرقمية.
جرّب بنفسك
<?php
// قراءة مدخلات JSON
$input = fgets(STDIN);
// تحويل JSON إلى مصفوفة ترابطية
$inventory = (array)json_decode($input, true);
// TODO: اكتب الكود الخاص بك أدناه للمرور عبر المخزون وطباعة كل منتج
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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'مراجعة: ترتيب لوحة المتصدرين