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

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

جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 22 من 68.

عند العمل مع المصفوفات الترابطية (associative arrays)، غالباً ما تحتاج إلى فرزها حسب قيمها مع الحفاظ على العلاقات بين المفاتيح والقيم. يوفر 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() العادية - فهي تحافظ على الارتباط بين المفاتيح والقيم.

للترتيب التنازلي، تعمل arsort() بشكل مشابه ولكنها ترتب القيم من الأعلى إلى الأقل:

<?php
arsort($students);
print_r($students);
// المخرجات: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>

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

quiz iconاختبر نفسك

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

quiz iconاختبر نفسك

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

quiz iconاختبر نفسك

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

challenge icon

التحدي

سهل

ستتلقى مدخلاً واحداً: مصفوفة ترابطية (associative array) لأسماء الموظفين ورواتبهم بتنسيق JSON. اقرأ المدخلات، وقم بتحويل سلسلة JSON إلى مصفوفة، واستخدم arsort() لفرز الموظفين حسب الراتب بترتيب تنازلي (من الأعلى إلى الأقل)، ثم اطبع المصفوفة المفروزة باستخدام print_r().

تنسيق المدخلات: سطر واحد يحتوي على كائن JSON مع أسماء الموظفين كمفاتيح والرواتب كقيم (مثال: {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000})

المخرجات المتوقعة: المصفوفة الترابطية المفروزة بترتيب تنازلي حسب قيم الرواتب، معروضة باستخدام print_r()

ورقة مرجعية

استخدم 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 )
?>

استخدم arsort() لفرز المصفوفات الترابطية حسب القيم بترتيب تنازلي:

<?php
arsort($students);
print_r($students);
// المخرجات: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>

تقوم كلتا الدالتين بتعديل المصفوفة الأصلية مباشرة وتحافظان على الارتباط بين المفاتيح والقيم، على عكس دالة sort() العادية.

جرّب بنفسك

<?php
// قراءة المدخلات
$input = fgets(STDIN);

// تحويل JSON إلى مصفوفة ترابطية
$employees = (array)json_decode($input, true);

// TODO: اكتب الكود الخاص بك أدناه لفرز المصفوفة حسب الراتب بترتيب تنازلي


// إخراج المصفوفة المرتبة
print_r($employees);
?>
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow