Сортировка массива PHP с использованием внутреннего val

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

)

Как я сортирую его, чтобы его переупорядочить с помощью внутреннего ключа «сортировка»? т.е. выше было бы выглядеть так:

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

)

Related of "Сортировка массива PHP с использованием внутреннего val"

Вы можете использовать usort с этой функцией сравнения:

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

Или вы используете array_multisort с дополнительным массивом значений ключа для порядка сортировки:

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

Здесь array_map с анонимной функцией используется для построения массива значений сортировки, который используется для сортировки самих значений массива. Преимущество этого заключается в том, что существует функция сравнения np, которую нужно вызывать для каждой пары значений.

Что-то вроде этого:

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

Что-то вроде этого:

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