簡體   English   中英

如何通過不同的“名稱”對數組進行分組,並將關聯的值放入每個名稱的子數組中?

[英]How can I group an array by distinct 'name' and put associated values into a sub-array for each name?

我已經做了很多搜索,似乎無法找到一個有助於我的案例的例子。

我有一個像這樣的數組:

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

任何指針都非常感謝!

這樣的事可能有用。

$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>";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM