如何通过不同的“名称”对数组进行分组,并将关联的值放入每个名称的子数组中?

时间:2014-05-05 17:17:03

标签: php arrays

我已经做了很多搜索,似乎无法找到一个有助于我的案例的例子。

我有一个像这样的数组:

array
  0 => 
    array
      'name' => 'iPhone 5'
      'data' => 7
  1 => 
    array
      'name' => 'iPhone 5'
      'data' => 5
  2 => 
    array
      'name' => 'iPhone 5'
      'data' => 4
  3 => 
    array
      'name' => 'Lumia 1020'
      'data' => 3
  4 => 
    array
      'name' => 'Lumia 1020'
      'data' => 3
  5 => 
    array
      'name' => 'Lumia 1020'
      'data' => 8
etc.

我想要实现的是一个新的数组,其分组如下:

array
  0 => 
    array
      'name' => 'iPhone 5'
      'data' => 
        array
          0 => 7
          1 => 5
          2 => 4
  1 => 
    array
      'name' => 'Lumia 1020'
      'data' => 
        array
          0 => 3
          1 => 3
          2 => 8
  2 => 
    array
      'name' => 'Samsung Galaxy S4'
      'data' => 
        array
          0 => 8
          1 => 5
          2 => 6

任何指针都非常感谢!

1 个答案:

答案 0 :(得分:2)

这样的事情可能有用。

$output = array();

//loop over the input array
foreach($input as $phone){
    //get the name for our key
    $name = $phone['name'];
    $data = $phone['data'];
    //if the name doesn't exist in our output...
    if(!isset($output[$name])){
        //add it
        $output[$name] = array('name'=>$name, 'data'=>array($data));
    } else {
        //else, add data
        $output[$name]['data'][] = $data;
    }
}
//get the values from the array to re-index numerically
$newData = array_values($output);
//display
echo "<pre>".print_r($newData, true)."</pre>";