ترتيب المصفوفات الترابطية حسب القيمة
جزء من قسم المنطق وتدفق التنفيذ في رحلة PHP على Coddy. الدرس 22 من 68.
عند العمل باستخدام المصفوفات الترابطية، غالبًا ما تحتاج إلى فرزها حسب قيمها مع الحفاظ على علاقات المفتاح والقيمة. توفر PHP دالتين متخصصتين لهذا الغرض: asort() للترتيب التصاعدي وarsort() للترتيب التنازلي.
إليك كيفية عمل asort() للفرز حسب القيم بترتيب تصاعدي:
<?php
$students = [
"Alice" => 85,
"Bob" => 92,
"Charlie" => 78,
"Diana" => 96
];
asort($students);
print_r($students);
// المخرجات: Array ( [Charlie] => 78 [Alice] => 85 [Bob] => 92 [Diana] => 96 )
?>لاحظ كيف أصبحت الدرجات مرتبة الآن من الأدنى إلى الأعلى، بينما ظل اسم كل طالب مرتبطًا بدرجته بشكل صحيح. هذه هي الميزة الأساسية لـ asort() مقارنةً بـ sort() العادية. فهي تحافظ على الارتباط بين المفاتيح والقيم.
للترتيب descending، تعمل arsort() بطريقة مشابهة، لكنها ترتّب القيم من الأعلى إلى الأدنى:
<?php
arsort($students);
print_r($students);
// المخرجات: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>تُعدّل كلتا الدالتين
التحدي
سهلستتلقى مُدخلاً واحدًا: مصفوفة ترابطية تحتوي على أسماء الموظفين ورواتبهم بتنسيق JSON. اقرأ المُدخل، وحوّل سلسلة JSON إلى مصفوفة، واستخدم arsort() لترتيب الموظفين حسب الراتب ترتيبًا تنازليًا (من الأعلى إلى الأدنى)، واطبع المصفوفة المرتبة باستخدام print_r().
تنسيق الإدخال: سطر واحد يحتوي على كائن JSON، بحيث تكون أسماء الموظفين مفاتيح والرواتب قيمًا (مثال: {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000})
المخرجات المتوقعة: المصفوفة الترابطية المرتبة ترتيبًا تنازليًا حسب قيم الرواتب، والمعروضة باستخدام print_r()
جرّب بنفسك
<?php
// اقرأ الإدخال
$input = fgets(STDIN);
// حوّل JSON إلى مصفوفة ترابطية
$employees = (array)json_decode($input, true);
// TODO: اكتب الكود الخاص بك أدناه لفرز المصفوفة حسب الراتب بترتيب تنازلي
// أخرج المصفوفة المرتبة
print_r($employees);
?>يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق وتدفق التنفيذ
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 عبر الإنترنت