How do I sort a multi-dimensional array by value?

后端 未结 3 1259
难免孤独
难免孤独 2020-12-07 01:52

I have an array as following and I want to order that array by the value of the key \"attack\". First keys of the arrays (15, 13, 18) are ID of some certain ite

3条回答
  •  青春惊慌失措
    2020-12-07 02:37

    Use uasort():

    This function sorts an array such that array indices maintain their correlation with the array elements they are associated with, using a user-defined comparison function.

    This is used mainly when sorting associative arrays where the actual element order is significant.

    Example:

    function cmp($a, $b) {
        if ($a['attack'] == $b['attack']) {
            return 0;
        }
        return ($a['attack'] < $b['attack']) ? -1 : 1;
    } 
    
    uasort($data, 'cmp');
    

    If the values are always strings, you can also use strcmp() in the cmp() function:

    function cmp($a, $b) {
        return strcmp($a['attack'], $b['attack']);
    } 
    

    Update:

    To sort in descending order you just have to change the return values:

    return ($a['attack'] < $b['attack']) ? 1 : -1;
    //                                     ^----^
    

    or to pick up @salathe's proposal:

    return $b['attack'] - $a['attack'];
    

提交回复
热议问题