帮助重组数组

时间:2010-12-24 09:42:54

标签: php

我想重新组合我的阵列。我有以下内容:

Array
(
    [0] => Array
        (
            [name] => test1
            [item_id] => 1
            [category] => cat1
        )
    [1] => Array
        (
            [name] => test2
            [item_id] => 2
            [category] => cat1
        )
    [2] => Array
        (
            [name] => test3
            [item_id] => 3
            [category] => cat1
        )
    [3] => Array
        (
            [name] => test4
            [item_id] => 4
            [category] => cat2
        )
)

我想像这样重新组合:

Array
(
    [cat1] => Array
        (
            [0] => Array
            (
                [name] => test1
                [item_id] => 1
            )
            [1] => Array
            (
                [name] => test2
                [item_id] => 2
            )
            [2] => Array
            (
                [name] => test3
                [item_id] => 3
            )
        )
    [cat2] => Array
        (
            [name] => test4
            [item_id] => 4
        )
)

有人可以告诉我这是最好的吗?

1 个答案:

答案 0 :(得分:4)

只需循环并重新组合它......例如:

$array = array(
    array(
        'name'      =>  'test1',
        'itemd_id'  =>  1,
        'category'  =>  'cat1',
    ),
    array(
        'name'      =>  'test2',
        'itemd_id'  =>  2,
        'category'  =>  'cat1',
    ),
    array(
        'name'      =>  'test3',
        'itemd_id'  =>  3,
        'category'  =>  'cat1',
    ),
    array(
        'name'      =>  'test4',
        'itemd_id'  =>  4,
        'category'  =>  'cat2',
    ),
);

$newArray = array();

foreach($array as $arrayKey => $arrayElement){
    $tmpCat = $arrayElement['category'];
    unset($arrayElement['category']);
    $newArray[$tmpCat][] =  $arrayElement;

}


var_dump($newArray);

array(2) {
  ["cat1"]=>
  array(3) {
    [0]=>
    array(2) {
      ["name"]=>
      string(5) "test1"
      ["itemd_id"]=>
      int(1)
    }
    [1]=>
    array(2) {
      ["name"]=>
      string(5) "test2"
      ["itemd_id"]=>
      int(2)
    }
    [2]=>
    array(2) {
      ["name"]=>
      string(5) "test3"
      ["itemd_id"]=>
      int(3)
    }
  }
  ["cat2"]=>
  array(1) {
    [0]=>
    array(2) {
      ["name"]=>
      string(5) "test4"
      ["itemd_id"]=>
      int(4)
    }
  }
}