Php 根据内部数组的值重新排列多维数组
我有一个这样的数组Php 根据内部数组的值重新排列多维数组,php,multidimensional-array,Php,Multidimensional Array,我有一个这样的数组 Array ( [0] => Array ( [cat_name] => Clothing [cat_id] => 1 [item_name] => shirt [item_id] => 1 [src] => 177 [sic] => 78 )
Array
(
[0] => Array
(
[cat_name] => Clothing
[cat_id] => 1
[item_name] => shirt
[item_id] => 1
[src] => 177
[sic] => 78
)
[1] => Array
(
[cat_name] => Stationary
[cat_id] => 3
[item_name] => note book
[item_id] => 8
[src] => 50
[sic] => 10
)
[2] => Array
(
[cat_name] => Stationary
[cat_id] => 3
[item_name] => ball pen
[item_id] => 10
[src] => 59
[sic] => 58
)
[3] => Array
(
[cat_name] => Expandable
[cat_id] => 4
[item_name] => vim powder
[item_id] => 14
[src] => 34
[sic] => 23
)
[4] => Array
(
[cat_name] => Clothing
[cat_id] => 1
[item_name] => pant
[item_id] => 16
[src] => 100
[sic] => 10
)
)
现在我想要什么
首先,它按cat_id排序,然后创建一个具有以下结构的新数组
Array
(
[0] =>"Clothing"=>Array
(
[0]=>Array
(
[item_name] => shirt
[item_id] => 1
[src] => 177
[sic] => 78
)
[1] => Array
(
[item_name] => pant
[item_id] => 16
[src] => 100
[sic] => 10
)
)
[1] => "Stationary"=>Array
(
[0] => Array
(
[item_name] => note book
[item_id] => 8
[src] => 50
[sic] => 10
)
[1] => Array
(
[item_name] => ball pen
[item_id] => 10
[src] => 59
[sic] => 58
)
)
[2]=>"Expandable => Array
(
[0] => Array
(
[item_name] => vim powder
[item_id] => 14
[src] => 34
[sic] => 23
)
)
)
未经测试
$output = array();
foreach($array as $item) {
if(!isset($output[$item['cat_name']])) {
$output[$item['cat_name']] = array();
}
$catName = $item['cat_name'];
unset($item['cat_name']);
$output[$catName][] = $item;
}
未经测试
$output = array();
foreach($array as $item) {
if(!isset($output[$item['cat_name']])) {
$output[$item['cat_name']] = array();
}
$catName = $item['cat_name'];
unset($item['cat_name']);
$output[$catName][] = $item;
}
函数cmp($a,$b)
{
如果($a['cat_id']=$b['cat_id'])){
返回0;
}
回报($a['cat_id']<$b['cat_id'])?-1:1;
}
//按类别id排序
usort($array,'cmp');
//创建分组数组
$res=array();
foreach($array as&$item){
$cat_name=$item['cat_name'];
未设置($item['cat_name',$item['cat_id');
$res[$cat_name][]=$item;
}
函数cmp($a,$b)
{
如果($a['cat_id']=$b['cat_id'])){
返回0;
}
回报($a['cat_id']<$b['cat_id'])?-1:1;
}
//按类别id排序
usort($array,'cmp');
//创建分组数组
$res=array();
foreach($array as&$item){
$cat_name=$item['cat_name'];
未设置($item['cat_name',$item['cat_id');
$res[$cat_name][]=$item;
}
感谢您的快速回复。它起作用了!但它只输出每个类别的单个数据(即每个类别的最新项目),我需要每个类别的多维数组,所有项目细节都应该在其中显示listed@i-像php一样,我忘记了最后一行中的方括号。现在应该可以工作了,还需要取消设置cat_id。更改上面的unset($item['cat\u name'],$item['cat\u id'])”
;谢谢你的快速回复。它起作用了!但它只输出每个类别的单个数据(即每个类别的最新项目),我需要每个类别的多维数组,所有项目细节都应该在其中显示listed@i-像php一样,我忘记了最后一行中的方括号。现在应该可以工作了,还需要取消设置cat_id。更改上面的unset($item['cat\u name'],$item['cat\u id'])”
;你的回答也很棒!别难过。祝你下次好运。我会选择你的答案。别担心,我想我们都这么做只是为了好玩。如果有时候能帮上忙,那就太好了:)你的答案也很棒!别难过。祝你下次好运。我会选择你的答案。别担心,我想我们都这么做只是为了好玩。如果有时正好有用,那就太好了:)