0

How can I sort an array without the MYSQL order?

I have a key value called sort this is 1,2,3,0 etc. The array that I print is OK but I need to sort this array from low to high based on the sort value. How can I do this?

    foreach($res as $key=>$value){
        $res[$key]['subaddonsname'] = $this->getValue("addonsname",$CFG['table']['addons'],"id = '".$res[$key]['menuaddons_addonsname']."' ");
        $newArr[$key]['subaddonsort'] = $this->getValue("addonsort",$CFG['table']['addons'],"id = '".$res[$key]['menuaddons_addonsname']."' ");
    }

    echo "<pre>";print_r($res);echo "</pre>";exit();

this results

Array
(
    [0] => Array
        (
            [menuaddons_id] => 4667
            [addonparentid] => 834
            [menuaddons_restaurantid] => 29
            [menuaddons_menuid] => 8137
            [menuaddons_addonsname] => 837
            [menuaddons_priceoption] => Free
            [menuaddons_price] => 0.00
            [subaddonsname] => Visfilet
            [subaddonsort] => 7
        )

    [1] => Array
        (
            [menuaddons_id] => 4668
            [addonparentid] => 834
            [menuaddons_restaurantid] => 29
            [menuaddons_menuid] => 8137
            [menuaddons_addonsname] => 835
            [menuaddons_priceoption] => Free
            [menuaddons_price] => 0.00
            [subaddonsname] => Tofu
            [subaddonsort] => 6
        )

    [2] => Array
        (
            [menuaddons_id] => 4669
            [addonparentid] => 834
            [menuaddons_restaurantid] => 29
            [menuaddons_menuid] => 8137
            [menuaddons_addonsname] => 836
            [menuaddons_priceoption] => Free
            [menuaddons_price] => 0.00
            [subaddonsname] => Omelet
            [subaddonsort] => 5
        )

    [3] => Array
        (
            [menuaddons_id] => 4670
            [addonparentid] => 834
            [menuaddons_restaurantid] => 29
            [menuaddons_menuid] => 8137
            [menuaddons_addonsname] => 841
            [menuaddons_priceoption] => Paid
            [menuaddons_price] => 1.95
            [subaddonsname] => Lamsvlees
            [subaddonsort] => 4
        )

    [4] => Array
        (
            [menuaddons_id] => 4671
            [addonparentid] => 834
            [menuaddons_restaurantid] => 29
            [menuaddons_menuid] => 8137
            [menuaddons_addonsname] => 838
            [menuaddons_priceoption] => Paid
            [menuaddons_price] => 0.45
            [subaddonsname] => Kipfilet
            [subaddonsort] => 3
        )

    [5] => Array
        (
            [menuaddons_id] => 4672
            [addonparentid] => 834
            [menuaddons_restaurantid] => 29
            [menuaddons_menuid] => 8137
            [menuaddons_addonsname] => 839
            [menuaddons_priceoption] => Paid
            [menuaddons_price] => 1.35
            [subaddonsname] => Garnalen
            [subaddonsort] => 2
        )

    [6] => Array
        (
            [menuaddons_id] => 4673
            [addonparentid] => 834
            [menuaddons_restaurantid] => 29
            [menuaddons_menuid] => 8137
            [menuaddons_addonsname] => 840
            [menuaddons_priceoption] => Paid
            [menuaddons_price] => 1.35
            [subaddonsname] => Biefstuk
            [subaddonsort] => 1
        )

)

2 Answers 2

1

You could also do it like this

usort($res, function($a, $b) {
    if ($a['subaddonsort'] == $b['subaddonsort']) return 0;
    return $a['subaddonsort'] < $b['subaddonsort'] ? -1 : 1;
});
Sign up to request clarification or add additional context in comments.

2 Comments

Works perfect! Couls u please explain?
return $a['subaddonsort'] - $b['subaddonsort']; would also work.
0

PHP's sort functionality pretty much caters for all occasions.

Given the details of your question and PHP documentation, it seems you need to use asort() function:

asort($res);

die('<pre>' . print_r($res, true) . '</pre>');

2 Comments

i have read about asort, but i need to sort on a key value like $res[$key]['addonsort'] this is in the foreach
Then you need to make use of usort()

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.