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 )
)
Вы можете использовать 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']; }