将销售额分成几个月并将其显示在表格中

时间:2017-12-01 15:42:19

标签: php arrays

我有这个数组$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

我很感激在解决这个问题的方法上有所帮助,因为我没有明确的想法。如果你能指出我正确的方向,那就太好了。

2 个答案:

答案 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);
    }
}

查看运营商??