[英]php sort multidimensional array by key
I have array like this:我有这样的数组:
$arr = [];
$arr['cat1']=[
'attributes'=>[
[
'attributeName'=>'name1',
'attrSortOrder'=>'1'
],
[
'attributeName'=>'name2',
'attrSortOrder'=>'5'
],
[
'attributeName'=>'name3',
'attrSortOrder'=>'2'
],
],
'category_id'=>10
];
$arr['cat2']=[
'attributes'=>[
[
'attributeName'=>'name4',
'attrSortOrder'=>'5'
],
[
'attributeName'=>'name5',
'attrSortOrder'=>'7'
],
[
'attributeName'=>'name6',
'attrSortOrder'=>'2'
],
],
'category_id'=>12
];
I need for each $arr element sort 'attributes' by attrSortOrder column.我需要按attrSortOrder列对每个 $arr 元素排序“属性”。 I tried it:
我尝试过这个:
function array_sort_by_column(&$arr, $col, $dir = SORT_ASC) {
$sort_col = array();
foreach ($arr as $key=> $row) {
$sort_col[$key] = strtolower($row[$col]);
}
array_multisort($sort_col, $dir, $arr);
}
array_sort_by_column($arr,'attrSortOrder');
But it did not help me.但这对我没有帮助。 How can solve this?
如何解决这个问题? How can i sort my array correctly?
如何正确排序我的数组? Thanks.
谢谢。
Change your function to将您的 function 更改为
function array_sort_by_column(&$arr, $col, $dir = SORT_DESC) {
foreach($arr as &$v){//pass by reference each sub-array
array_multisort(array_column($v['attributes'], 'attrSortOrder'), $dir, $v['attributes']);
}
}
array_sort_by_column($arr,'attrSortOrder');
You can change second argument SORT_DESC
OR SORT_ASC
您可以更改第二个参数
SORT_DESC
或SORT_ASC
Working example:- https://3v4l.org/pQ0Eu工作示例:- https://3v4l.org/pQ0Eu
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.