ترتيب المصفوفات الترابطية حسب المفتاح
جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 23 من 68.
بينما يعد الفرز حسب القيم مفيدًا، قد تحتاج أحيانًا إلى تنظيم المصفوفات الترابطية حسب مفاتيحها بدلاً من ذلك. توفر PHP الدالة ksort() لترتيب المفاتيح تصاعديًا والدالة krsort() لترتيب المفاتيح تنازليًا، وكلاهما يحافظ على العلاقات المهمة بين المفتاح والقيمة.
إليك كيف يقوم ksort() بترتيب مصفوفة أبجدياً حسب مفاتيحها:
<?php
$settings = [
"theme" => "dark",
"language" => "english",
"notifications" => "enabled",
"auto_save" => "on"
];
ksort($settings);
print_r($settings);
// المخرجات: Array ( [auto_save] => on [language] => english [notifications] => enabled [theme] => dark )
?>لاحظ كيف أصبحت المفاتيح الآن مرتبة أبجديًا من A إلى Z، بينما يظل كل اسم إعداد مقترنًا بشكل صحيح بقيمته. هذا مفيد بشكل خاص عندما تريد عرض خيارات التكوين أو عناصر القائمة بطريقة منظمة ومنسقة.
للترتيب الأبجدي العكسي، تعمل krsort() بشكل مشابه ولكنها تفرز المفاتيح من Z إلى A. تقوم كلتا الدالتين بتعديل المصفوفة الأصلية مباشرة، تماماً مثل دوال الفرز الأخرى في PHP، مما يجعلها فعالة لتنظيم البيانات حيث يكون ترتيب المفاتيح أكثر أهمية من ترتيب القيم.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
التحدي
سهلستتلقى مدخلاً واحداً: مصفوفة ترابطية لأسماء الأقسام وتخصيصات ميزانياتها بتنسيق JSON. اقرأ المدخلات، وقم بتحويل سلسلة JSON إلى مصفوفة، واستخدم ksort() لفرز الأقسام أبجدياً حسب مفاتيحها بترتيب تصاعدي، واطبع المصفوفة المفروزة باستخدام print_r().
تنسيق المدخلات: سطر واحد يحتوي على كائن JSON مع أسماء الأقسام كمفاتيح ومبالغ الميزانية كقيم (مثال: {"Marketing":75000,"IT":120000,"HR":65000,"Finance":95000})
المخرجات المتوقعة: المصفوفة الترابطية المفروزة بترتيب أبجدي تصاعدي حسب أسماء الأقسام (المفاتيح)، معروضة باستخدام print_r()
ورقة مرجعية
توفر PHP دالتي ksort() و krsort() لفرز المصفوفات الترابطية حسب مفاتيحها مع الحفاظ على العلاقات بين المفاتيح والقيم.
تقوم ksort() بفرز المفاتيح بترتيب أبجدي تصاعدي (من A إلى Z):
ksort($array);تقوم krsort() بفرز المفاتيح بترتيب أبجدي تنازلي (من Z إلى A):
krsort($array);تقوم كلتا الدالتين بتعديل المصفوفة الأصلية مباشرة:
<?php
$settings = [
"theme" => "dark",
"language" => "english",
"notifications" => "enabled",
"auto_save" => "on"
];
ksort($settings);
print_r($settings);
// المخرجات: Array ( [auto_save] => on [language] => english [notifications] => enabled [theme] => dark )
?>جرّب بنفسك
<?php
// قراءة المدخلات
$input = fgets(STDIN);
// تحويل JSON إلى مصفوفة
$departments = (array)json_decode($input, true);
// TODO: اكتب الكود الخاص بك أدناه لفرز المصفوفة حسب المفاتيح
// طباعة النتيجة
print_r($departments);
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس 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'مراجعة: ترتيب لوحة المتصدرين