函数按键递归排序php中的多维数组
我有一个类别数组,我想创建一个函数,通过传递一个参数对它们进行排序,函数使用该参数对数组进行排序 我拥有的阵列如下所示:函数按键递归排序php中的多维数组,php,arrays,sorting,Php,Arrays,Sorting,我有一个类别数组,我想创建一个函数,通过传递一个参数对它们进行排序,函数使用该参数对数组进行排序 我拥有的阵列如下所示: Array ( [1] = Array ( [id] = 1 [name] = categoryName1 [parent] = 0 [sorting] = 1 [child] = Array ( [0] = Array
Array
(
[1] = Array
(
[id] = 1
[name] = categoryName1
[parent] = 0
[sorting] = 1
[child] = Array
(
[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
[child] = Array
(
[0] = Array
(
[id] = 5
[name] = categoryName5
[parent] = 3
[sorting] = 1
)
)
)
)
)
[2] = Array
(
[id] = 2
[name] = categoryName2
[parent] = 0
[sorting] = 2
)
数组
(
[1] =数组
(
[id]=1
[名称]=类别名称1
[父项]=0
[排序]=1
[0]=数组
(
[id]=6
[名称]=类别名称6
[家长]=1
[排序]=3
)
[1] =数组
(
[id]=4
[名称]=类别名称4
[家长]=1
[排序]=2
)
[2] =数组
(
[id]=3
[名称]=类别名称3
[家长]=1
[排序]=1
[0]=数组
(
[id]=5
[名称]=类别名称5
[家长]=3
[排序]=1
)
)
)
[2] =数组
(
[id]=2
[名称]=类别名称2
[父项]=0
[排序]=2
)
)
我尝试使用数组_multisort,如下所示:
Array
(
[1] = Array
(
[id] = 1
[name] = categoryName1
[parent] = 0
[sorting] = 1
[child] = Array
(
[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
[child] = Array
(
[0] = Array
(
[id] = 5
[name] = categoryName5
[parent] = 3
[sorting] = 1
)
)
)
)
)
[2] = Array
(
[id] = 2
[name] = categoryName2
[parent] = 0
[sorting] = 2
)
函数递归排序(&$array,$sort\u key){
foreach($k=>&$v数组){
if(is_数组($v)){
递归排序($v,$sort\u key);
}
}
返回array\u multisort(array\u列($array,$sort\u键),sort\u ASC,$array);
}
递归排序($sorted_categories,'sorting');
但我得到了这个错误:
数组\ u multisort():数组大小不一致
我预计产出:
数组
(
[1] =数组
(
[id]=1
[名称]=类别名称1
[父项]=0
[排序]=1
[0]=数组
(
[id]=3
[名称]=类别名称3
[家长]=1
[排序]=1
[0]=数组
(
[id]=5
[名称]=类别名称5
[家长]=3
[排序]=1
)
)
[1] =数组
(
[id]=4
[名称]=类别名称4
[家长]=1
[排序]=2
)
[2] =数组
(
[id]=6
[名称]=类别名称6
[家长]=1
[排序]=3
)
)
[2] =数组
(
[id]=2
[名称]=类别名称2
[父项]=0
[排序]=2
)
)
使用此功能:
recursive_sort($sorted_categories,'sorting');
我明白为什么我不能正确排序数组。。。子类别必须聚集在一个键(如“child”)内,如下所示:
Array
(
[1] = Array
(
[id] = 1
[name] = categoryName1
[parent] = 0
[sorting] = 1
[child] = Array
(
[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
[child] = Array
(
[0] = Array
(
[id] = 5
[name] = categoryName5
[parent] = 3
[sorting] = 1
)
)
)
)
)
[2] = Array
(
[id] = 2
[name] = categoryName2
[parent] = 0
[sorting] = 2
)
)
所以我可以用这个函数对数组进行排序
function recursive_sort(&$array, $sort_key) {
foreach ( $array as $k => &$v ) {
if (is_array($v)) {
recursive_sort( $v, $sort_key );
}
}
// at least 2 elements
if ($array[1]) {
return array_multisort( array_column( $array, $sort_key ), SORT_DESC, $array );
}
}
recursive_sort($sorted_categories, 'id');
我明白为什么我不能正确排序数组。。。子类别必须聚集在一个键(如“child”)内,如下所示:
Array
(
[1] = Array
(
[id] = 1
[name] = categoryName1
[parent] = 0
[sorting] = 1
[child] = Array
(
[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
[child] = Array
(
[0] = Array
(
[id] = 5
[name] = categoryName5
[parent] = 3
[sorting] = 1
)
)
)
)
)
[2] = Array
(
[id] = 2
[name] = categoryName2
[parent] = 0
[sorting] = 2
)
)
所以我可以用这个函数对数组进行排序
function recursive_sort(&$array, $sort_key) {
foreach ( $array as $k => &$v ) {
if (is_array($v)) {
recursive_sort( $v, $sort_key );
}
}
// at least 2 elements
if ($array[1]) {
return array_multisort( array_column( $array, $sort_key ), SORT_DESC, $array );
}
}
recursive_sort($sorted_categories, 'id');
无论谁回答这个问题,我都在看着你:D!所以,最后我回答自己:)我希望它对其他用户也有用!无论谁回答这个问题,我都在看着你:D!所以,最后我回答自己:)我希望它对其他用户也有用!