我已经构建了一个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"
..
]
..
..
是否可以操作初始数组以便实现所需的数组?如果是这样,你对如何做到这一点有所了解吗?
或者可能是应修改数据库查询以根据需要显示结果?
答案 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"
]
..
..