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

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

جزء من قسم المنطق وتدفق التنفيذ في رحلة PHP على Coddy. الدرس 25 من 68.

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

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

<?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 )
?>

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

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

challenge icon

التحدي

سهل

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

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

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

جرّب بنفسك

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

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

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

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

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

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