我有这个数组$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
我很感激在解决这个问题的方法上有所帮助,因为我没有明确的想法。如果你能指出我正确的方向,那就太好了。
答案 0 :(得分:0)
也许我的回答是愚蠢的,但我会使用SQL数据库而不是数组。您有更多的灵活性,可以让服务器进行数学运算。
答案 1 :(得分: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);
}
}
查看运营商??。