Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ترتيب المصفوفات الترابطية حسب القيمة

جزء من قسم المنطق وتدفق التنفيذ في رحلة 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 )
?>

تُعدّل كلتا الدالتين الأصلي مباشرةً، تمامًا مثل نظيرتيهما من المفهرسة. وهذا يجعلهما مثاليتين لتنظيم بيانات مثل درجات الطلاب، أو أسعار المنتجات prices، أو أي سيناريو تحتاج فيه إلى sort حسب القيمة مع الحفاظ على أزواج المفتاح والقيمة سليمة.

challenge icon

التحدي

سهل

ستتلقى مُدخلاً واحدًا: مصفوفة ترابطية تحتوي على أسماء الموظفين ورواتبهم بتنسيق 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);
?>
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم PHP عبر الإنترنت