المصفوفات الترابطية ثنائية الأبعاد
جزء من قسم المنطق وتدفق التنفيذ في رحلة PHP على Coddy. الدرس 31 من 68.
بينما كنت تعمل مع مصفوفات ثنائية الأبعاد باستخدام فهارس رقمية، يمكنك أيضًا إنشاء بيانات أكثر تنظيمًا باستخدام 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"]
];
?>هذا الهيكل قوي للغاية لتنظيم البيانات المعقدة مثل ملفات تعريف المستخدمين، أو كتالوجات المنتجات، أو أي سيناريو تحتاج فيه إلى تخزين خصائص متعددة مرتبطة بكل عنصر. تجعل المفاتيح النصية شفرةك موثِّقة لذاتها وأسهل بكثير في الصيانة من تذكّر المواضع الرقمية.
التحدي
سهلستتلقى مُدخلاً واحدًا: مصفوفة ترابطية ثنائية الأبعاد تمثل مخزون product بتنسيق JSON. لكل product معرّف product فريد كمفتاح، والقيمة هي مصفوفة ترابطية تحتوي على "name" و"price" الخاصين بالـproduct. اقرأ الإدخال، وحوّل سلسلة JSON إلى مصفوفة ترابطية ثنائية الأبعاد، وتكرّر عبر جميع المنتجات، واطبع معلومات كل product بالتنسيق: ID: [product_id] - Name: [name] - Price: $[price]
يجب طباعة كل product في سطر منفصل.
تنسيق الإدخال: سطر واحد يحتوي على كائن JSON يمثل product inventory (مثال: {"P001":{"name":"Laptop","price":999.99},"P002":{"name":"Mouse","price":25.50},"P003":{"name":"Keyboard","price":75.00}})
الإخراج المتوقع: تتم طباعة كل product في سطر منفصل بالتنسيق ID: [product_id] - Name: [name] - Price: $[price]
جرّب بنفسك
<?php
// اقرأ إدخال JSON
$input = fgets(STDIN);
// حوّل JSON إلى مصفوفة ترابطية
$inventory = (array)json_decode($input, true);
// TODO: اكتب الكود الخاص بك أدناه للتكرار عبر المخزون وطباعة كل منتج
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
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'مراجعة: ترتيب لوحة المتصدرينتدرّب بنفسك: مترجم PHP عبر الإنترنت