أعد ترتيب مجموعة PHP مع Usort و STROCMP: علة
سؤال
إن استخدام USORT و STROCMP معًا لطلب مجموعة من مفاتيحها له تأثير غريب: إنه يعيد صفيفتي مع عدد أقل من العناصر الموجودة فيه.
تحتوي الصفيف في حالتي على صفوف تمثل المهام ، وأريد أن أطلب الصفوف الموجودة في الصفيف بواسطة المفتاح "Displayorder" ، وهو رقم ولكن أريد أن يتم فرزه بطريقة أبجدية (لا تسأل لماذا).
function treeSort($a, $b) {
return strcmp(strval($a['displayOrder']), strval($b['displayOrder']));
}
usort($tree, "treeSort");
هناك تسعة صفوف ، لكنني فقط أحصل على ستة منهم. يتم فرز هؤلاء الستة بشكل جيد ، بالمناسبة. إذا استخدمت Uasort بدلاً من Usort ، فأنا أحصل على جميع الصفوف التسعة ، لكنني طلبت بطريقة رقمية.
المحلول
لقد وجدت حلًا: array_multisort. ربما هذا ما اقترحته تيم إذا كنت قد أعطيتك التفاصيل على شجرة $.
حصلت على الرمز من الأمثلة الواردة في الوثائق على Array_Multisort:
foreach ($tree as $key => $row) {
$sortOrder[$key] = $row['displayOrder'];
}
array_multisort($sortOrder, SORT_STRING, $tree);
لا تنتمي إلى StackOverflow