У меня есть массив категорий, и я хотел бы создать функцию для их сортировки путем передачи параметра, который функция использует для сортировки массива.
массив, который у меня есть, выглядит следующим образом:
Array
(
[1] = Array
(
[id] = 1
[name] = categoryName1
[parent] = 0
[sorting] = 1
[0] = Array
(
[id] = 6
[name] = categoryName6
[parent] = 1
[sorting] = 3
)
[1] = Array
(
[id] = 4
[name] = categoryName4
[parent] = 1
[sorting] = 2
)
[2] = Array
(
[id] = 3
[name] = categoryName3
[parent] = 1
[sorting] = 1
[0] = Array
(
[id] = 5
[name] = categoryName5
[parent] = 3
[sorting] = 1
)
)
)
[2] = Array
(
[id] = 2
[name] = categoryName2
[parent] = 0
[sorting] = 2
)
)
Я пытался использовать array_multisort следующим образом:
function recursive_sort(&$array, $sort_key) {
foreach ( $array as $k => &$v ) {
if (is_array($v)) {
recursive_sort( $v, $sort_key );
}
}
return array_multisort(array_column($array,$sort_key), SORT_ASC, $array);
}
recursive_sort($sorted_categories, 'sorting');
, но получаю эту ошибку:
array_multisort (): размеры массива несовместимы
Я ожидаю вывод:
Array
(
[1] = Array
(
[id] = 1
[name] = categoryName1
[parent] = 0
[sorting] = 1
[0] = Array
(
[id] = 3
[name] = categoryName3
[parent] = 1
[sorting] = 1
[0] = Array
(
[id] = 5
[name] = categoryName5
[parent] = 3
[sorting] = 1
)
)
[1] = Array
(
[id] = 4
[name] = categoryName4
[parent] = 1
[sorting] = 2
)
[2] = Array
(
[id] = 6
[name] = categoryName6
[parent] = 1
[sorting] = 3
)
)
[2] = Array
(
[id] = 2
[name] = categoryName2
[parent] = 0
[sorting] = 2
)
)
с этой функцией:
recursive_sort($sorted_categories, 'sorting');