Reza
Reza

Reputation: 880

Sort array by key value without mysql

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
        )

)

Upvotes: 0

Views: 66

Answers (2)

Ali Nouman
Ali Nouman

Reputation: 3414

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;
});

Upvotes: 1

Christian
Christian

Reputation: 28154

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>');

Upvotes: 0

Related Questions