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'])”
;你的回答也很棒!别难过。祝你下次好运。我会选择你的答案。别担心,我想我们都这么做只是为了好玩。如果有时候能帮上忙,那就太好了:)你的答案也很棒!别难过。祝你下次好运。我会选择你的答案。别担心,我想我们都这么做只是为了好玩。如果有时正好有用,那就太好了:)