对多维数组进行排序(了解Usort和MultiSort)

时间:2015-09-21 13:36:45

标签: php arrays sorting

我有一个数组,它将多个数据库表合并到一个所需信息的数组中。我想按名称按字母顺序对这些信息进行排序,如果名称相同,则按id排序。

我查看了以下所有主题,但未能产生效果。

MY ARRAY as sudo dump

$payload['output'] = 'Vulnerabilities found : ' . $vulnerabilites;

代码尝试

array(3){ 
    [0] => array(3){ 
        ['id'] => "1",  
        ['name'] => "Slippery Sasha", 
        ['type'] => "Electric Eel"
    }, 
    [1] => array(3){ 
        ['id'] => "2",  
        ['name'] => "Viscious Vipers", 
        ['type'] => "Snake"
    },
    [2] => array(3){ 
        ['id'] => "3",  
        ['name'] => "Finnic Fox", 
        ['type'] => "Rabid Fox"
    }, 
}

MY INTENDEND DUMP

// Sort
        $sortByTypes = array('name', 'id', 'type');
        usort($returnArray, function($a, $b) use($sortByTypes){
            foreach($sortByTypes as $field){
                $sort = strnatcasecmp($a[$field], $a[$field]);
                if($sort !== 0){
                    break;
                }
            }
            return $sort;
        });

奖金 如果您能够解释它是如何工作的以及它对阵列进行排序的方式,让我更好地理解这将是非常棒的功能!

1 个答案:

答案 0 :(得分:1)

您可以像{/ p>一样使用usort

usort($arr,function($a,$b){
    $c = strcasecmp($a['name'], $b['name']);
    $c .= $a['id'] - $b['id'];
    return $c;
});
print_r($arr);

Demo