在几个月内拆分销售,并将其显示在桌子中



我有这个数组$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数据库而不是数组。您具有更大的灵活性,可以让服务器进行数学。

最新更新