我有这个数组$sales
,其结构如下:
array(627) (
[0] => array(4) (
[id]=> (int) 1
[name] => (string) Tesla
[total]=> (string) 24
[month] => (string) 4
)
[1] => array(4) (
[id]=> (int) 1
[name] => (string) Tesla
[total]=> (string) 18
[month] => (string) 5
[2] => array(4) (
[id]=> (int) 1
[name] => (string) Tesla
[total]=> (string) 18
[month] => (string) 6
[3] => array(4) (
[id]=> (int) 2
[name] => (string) Audi
[total]=> (string) 16
[month] => (string) 4
)
[4] => array(4) (
[id]=> (int) 2
[name] => (string) Audi
[total]=> (string) 18
[month] => (string) 5
它的作用是为每种类型的汽车和每个月存储销售信息。在某些月中,没有销售,所以它们是空白的。我想做的是循环浏览每种类型的汽车,并显示以下内容:
Car Jan. Feb. Mar. Apr. May. Jun. Jul, Aug. Sept. Oct. Nov. Dec
Tesla 0 0 0 24 18 18 0 0 0 0 0 0
Audi 0 0 0 16 18 0 0 0 0 0 0 0
我很高兴能在解决此问题的途中获得一些帮助,因为我没有明确的想法。如果您可以向我指出正确的方向,那就太好了。
这似乎是一个足够的基本攻击,可以用一些foreach循环解决:
$result = [];
foreach($sales as $sale) {
if(!isset($result[$sale['name']]))
$result[$sale['name']] = [];
if(!isset($result[$sale['name']][$sale['month']]))
$result[$sale['name']][$sale['month']] = $sale['total'];
else
$result[$sale['name']][$sale['month']] += $sale['total'];
}
foreach($result as $model => $months) {
for($month = 0; $month < 12; $month++) { // assuming that January is 0
$total = ($months[$month] ?? 0);
}
}
请参阅操作员??。
也许我的答案很愚蠢,但是我会使用一个SQL数据库而不是数组。您具有更大的灵活性,可以让服务器进行数学。