2016-01-17 132 views
0

我有以下阵列:分组阵列由键/值

$array = array(
     array(
      'id' => '1', 
      'brand' => 'Nike', 
      'available' => '2016-01-16', 
      'price' => '25' 
     ), 
     array(
      'id' => '2', 
      'brand' => 'Nike', 
      'available' => '2016-01-16', 
      'price' => '20' 
     ), 
     array(
      'id' => '3', 
      'brand' => 'Puma', 
      'available' => '2016-01-16', 
      'price' => '20' 
     ), 
     array(
      'id' => '4', 
      'brand' => 'Adidas', 
      'available' => '2016-01-16', 
      'price' => '30' 
     ), 
     array(
      'id' => '5', 
      'brand' => 'Adidas', 
      'available' => '2016-01-15', 
      'price' => '32' 
     ), 
    ); 

我正在寻找得到的是类似以下内容:

array(
     'brand' => 'Nike', 
     'data' => array(
      array(
       '2016-01-16' => '25' 
      ), 
      array(
       '2016-01-16' => '20' 
      ) 
     ) 
    ), 
    array(
     'brand' => 'Puma', 
     'data' => array(
      array(
       '2016-01-16' => '20' 
      ) 
     ) 
    ), 
    array(
     'brand' => 'Adidas', 
     'data' => array(
      array(
       '2016-01-16' => '30' 
      ), 
      array(
       '2016-01-15' => '32' 
      ) 
     ) 
    ); 

从而使阵列是由品牌分组,包含availableprice作为子阵列。

理想情况下,我想能够循环虽然阵列和获取信息如下所示:

$data['brand']; // will store the brand (Nike, Puma etc) 
    $data['brand']['data'] 

还是这样,我可以很容易地循环彻底和提取数据的东西。

谢谢

回答

0

下面的代码做这项工作:

$result = array(); 
foreach ($array as $record) { 
    if (!isset($result[$record['brand']])) { 
     $result[$record['brand']] = array(
      'brand' => $record['brand'], 
      'data' => array(array($record['available'] => $record['price'])), 
     ); 
    } 
    else { 
     $result[$record['brand']]['data'][] = array($record['available'] => $record['price']); 
    } 
} 
$result = array_values($result); 
+0

这似乎几乎工作...问题是,我liek有'数组中data'元素,如' '数据'=>数组( 阵列( '2016年1月16日'=> '25' ) 阵列( '2016年1月16日'=> '20' ) )' –

+0

错失那更新了答案。 –

+0

辉煌。非常感谢你 –