-1

Want to sort array by value of key, but can't find solution in web.

I want in PHP to sort this array DESC by key is_paid so FROM original array:

[user_courses] => Array
    (
        [1] => Array
            (
                [paid_course_id] => 1
                [course_name] => english
                [course_label] => English
                [is_paid] => 1
                [time] => 1378925144
                [voucher] => 0
            )

        [2] => Array
            (
                [paid_course_id] => 2
                [course_name] => spanish
                [course_label] => English
                [is_paid] => 0
                [time] => 1379073137
                [voucher] => 0
            )

        [3] => Array
            (
                [paid_course_id] => 3
                [course_name] => russian
                [course_label] => Russian
                [is_paid] => 1
                [time] => 1452277777
                [voucher] => 0


    )
)

To become:

[user_courses] => Array
(
[1] => Array
    (
        [paid_course_id] => 1
        [course_name] => english
        [course_label] => English
        [is_paid] => 1
        [time] => 1378925144
        [voucher] => 0
    )
[3] => Array
    (
        [paid_course_id] => 3
        [course_name] => russian
        [course_label] => Russian
        [is_paid] => 1
        [time] => 1452277777
        [voucher] => 0


)

[2] => Array
    (
        [paid_course_id] => 2
        [course_name] => spanish
        [course_label] => English
        [is_paid] => 0
        [time] => 1379073137
        [voucher] => 0
    )


)

So first to list all the items of the array where have is_paid 1 and at the bottom of the array to put is_paid 0

1 Answers1

0
function sortOrder($a, $b) {
    return $a['paid_course_id'] > $b['paid_course_id'];
}

usort($courseArray['user_courses'], 'sortOrder');

or with anonymous function

usort($courseArray['user_courses'], function($a, $b) {
    return $a['paid_course_id'] > $b['paid_course_id'];
});
Gregory Nowakowski
  • 1,048
  • 10
  • 12