根据内部数组的值重新排列多维数组

diE*_*cho 1 php multidimensional-array

我有一个这样的数组

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
        )

)
Run Code Online (Sandbox Code Playgroud)

现在我想要它首先按 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
            )
        )
)
Run Code Online (Sandbox Code Playgroud)

cem*_*cem 5

未经测试

$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;
}
Run Code Online (Sandbox Code Playgroud)