Я ассоциативный массив которым мне нужно Sord по значению:многомерных ассоциативный массив сортировки по значению
Array
(
['group_1'] => Array
(
['key_1'] => Array
(
['field_1'] = 'someval',
['order'] = 2
)
['key_2'] => Array
(
['field_1'] = 'someval',
['order'] = 0
)
)
['group_2'] => Array
(
...
)
)
Я пытаюсь отсортировать каждый массив «group_N» на поле «порядок» с usort():
function cmp($a, $b) {
if ($a['order'] == $b['order']) {
return 0;
}
return ($a['order'] < $b['order']) ? -1 : 1;
}
foreach ($result_array as $group => $values) {
uasort($values, "cmp");
}
Но никакого успеха. Как я могу это сделать?
Вы сортируете локальную переменную '$ values', которая не хранится нигде. '$ result_array [$ group] = $ values;' – zerkms
передать '$ values' по ссылке. 'foreach ($ result_array as & $ group => & $ value)'. честно говоря, я думаю, что было бы лучше использовать карту массива с анонимной функцией, содержащей сортировку, в отличие от foreach, но это только я. – r3wt
@ r3wt 1. 'array_map' действительно принимает копию массива 2. Он не работает с ключами 3. Мутации/изменчивость не круты; ;-) – zerkms