组合多个PHP数组

时间:2015-02-26 12:30:14

标签: php arrays

我已经构建了一个DQL,它给我的结果如下:

array:1598 [▼
  0 => array:3 [▼
    "year" => "2000"
    "total" => "750.00"
    "name" => "Brand #1"
  ]
  1 => array:3 [▼
    "year" => "2000"
    "total" => "845.00"
    "name" => "Brand #2"
  ]
  ..
  ..

如您所见,结果中有1598个子阵列。共有100个品牌和16个日期(从2000年到2015年)。 total是特定品牌在特定年份的订单总价值。

我需要构建一个看起来像这样的数组:

array:100 [▼
  "Brand #1" => array:3 [▼
  "2000" => "750.00"
  "2001" => "1750.00" 
  ..  
  ]
  "Brand #2" => array:3 [▼
    "2000" => "845.00"
    "2001" => "945.00"
    ..
  ]
  ..
  ..
  1. 是否可以操作初始数组以便实现所需的数组?如果是这样,你对如何做到这一点有所了解吗?

  2. 或者可能是应修改数据库查询以根据需要显示结果?

2 个答案:

答案 0 :(得分:1)

最好的方法是使用正确的数据库查询生成所需的数组。

如果不可能,你可以循环数组并在PHP中重新排序

$old_array= array(
  0 => array(
    "year" => "2000",
    "total" => "750.00",
    "name" => "Brand #1"
  ),
  1 => array(
    "year" => "2001",
    "total" => "950.00",
    "name" => "Brand #1"
  ),
  2 => array(
    "year" => "2000",
    "total" => "845.00",
    "name" => "Brand #2"
  )
);

$new_array = array();
foreach($old_array as $i=>$data){
    @$new_array[$data['name']][$data['year']] = $data['total'];
}

print_r($new_array);

答案 1 :(得分:0)

您可以尝试以下方法:

$structuredArr= array();
foreach ($unstructArr as $item) {
  $structuredArr[ $item['name'] ][ $item['year'] ] = $item['total'];
}

此处$unstructArr是您的第一个包含非结构化数据的数组,即

array:1598 [▼
  0 => array:3 [▼
    "year" => "2000"
    "total" => "750.00"
    "name" => "Brand #1"
  ]
  1 => array:3 [▼
    "year" => "2000"
    "total" => "845.00"
    "name" => "Brand #2"
  ]
  ..
  ..