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

الترتيب المخصص باستخدام 'usort'

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

عندما لا تلبي دوال الفرز المدمجة في PHP احتياجاتك الخاصة، توفر دالة usort() المرونة القصوى من خلال السماح لك بتحديد كيفية مقارنة العناصر وترتيبها بالضبط. تأخذ هذه الدالة مصفوفتك ودالة مقارنة مخصصة تكتبها لتحديد منطق الفرز.

تستقبل دالة المقارنة عنصرين من المصفوفة ويجب أن تُعيد عدداً صحيحاً: رقماً سالباً إذا كان يجب أن يأتي العنصر الأول قبل الثاني، أو صفراً إذا كانا متساويين، أو رقماً موجباً إذا كان يجب أن يأتي العنصر الأول بعد الثاني.

<?php
function compareByLength($a, $b) {
    return strlen($a) - strlen($b);
}

$words = ["elephant", "cat", "butterfly", "dog"];
usort($words, "compareByLength");
print_r($words);
// المخرجات: Array ( [0] => cat [1] => dog [2] => elephant [3] => butterfly )
?>

في هذا المثال، تقوم دالة المقارنة بحساب الفرق بين أطوال السلاسل النصية. عندما تُرجع strlen($a) - strlen($b) قيمة سالبة، فهذا يعني أن السلسلة الأولى أقصر ويجب أن تأتي أولاً في المصفوفة المرتبة.

مثل دوال الفرز الأخرى في PHP، تقوم usort() بتعديل المصفوفة الأصلية مباشرةً. تفتح هذه الدالة القوية آفاقاً للفرز بناءً على أي معايير يمكنك تخيلها—سواء كان ذلك طول السلسلة النصية، أو منطق الأعمال المخصص، أو مقارنات معقدة متعددة الحقول.

quiz iconاختبر نفسك

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

quiz iconاختبر نفسك

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

quiz iconاختبر نفسك

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

challenge icon

التحدي

سهل

ستتلقى مدخلاً واحداً: مصفوفة من أسعار المنتجات بتنسيق JSON. اقرأ المدخلات، وقم بتحويل سلسلة JSON إلى مصفوفة، وأنشئ دالة مقارنة تقوم بفرز الأسعار بترتيب تصاعدي، واستخدم usort() مع دالة المقارنة الخاصة بك لفرز المصفوفة، واطبع المصفوفة المفروزة باستخدام print_r().

تنسيق المدخلات: سطر واحد يحتوي على مصفوفة JSON من الأرقام (مثال: [29.99,15.50,42.00,8.75,33.25])

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

ورقة مرجعية

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

تستقبل دالة المقارنة عنصرين ويجب أن تعيد:

  • رقم سالب: العنصر الأول يأتي قبل الثاني
  • صفر: العناصر متساوية
  • رقم موجب: العنصر الأول يأتي بعد الثاني
<?php
function compareByLength($a, $b) {
    return strlen($a) - strlen($b);
}

$words = ["elephant", "cat", "butterfly", "dog"];
usort($words, "compareByLength");
print_r($words);
// المخرجات: Array ( [0] => cat [1] => dog [2] => elephant [3] => butterfly )
?>

مثل دوال الفرز الأخرى في PHP، تقوم usort() بتعديل المصفوفة الأصلية مباشرةً.

جرّب بنفسك

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

// TODO: إنشاء دالة مقارنة واستخدام usort() لفرز المصفوفة

// طباعة المصفوفة المفروزة
print_r($prices);
?>
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow