سؤال

إن استخدام 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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top