Classificação de matriz PHP usando val interno

Array ( [1] => Array ( [id] => 1 [sort] => 1 ) [3] => Array ( [id] => 3 [sort] => 3 ) [2] => Array ( [id] => 2 [sort] => 2 ) 

)

Como faço para ordená-lo, então é re-ordenado usando a tecla ‘sort’ interna? ou seja, o anterior ficaria assim:

 Array ( [1] => Array ( [id] => 1 [sort] => 1 ) [2] => Array ( [id] => 2 [sort] => 2 ) [3] => Array ( [id] => 3 [sort] => 3 ) 

)

Você pode usar usort com esta function de comparação:

 function cmpBySort($a, $b) { return $a['sort'] - $b['sort']; } usort($arr, 'cmpBySort'); 

Ou você usa array_multisort com uma matriz adicional de valores-chave para a ordem de sorting:

 $keys = array_map(function($val) { return $val['sort']; }, $arr); array_multisort($keys, $arr); 

Aqui array_map com a function anônima é usado para criar uma matriz dos valores de sorting usados ​​para classificar os próprios valores da matriz. A vantagem disso é que há uma function de comparação np que precisa ser chamada para cada par de valores.

Algo assim:

 usort($array, function (array $a, array $b) { return $a["sort"] - $b["sort"]; }); 

Algo assim:

 uasort($array, 'compfunc'); function compfunc($a, $b) { return $a['sort'] - $b['sort']; }