Я пытаюсь создать HTML-таблицу с многомерным массивом с помощью PHP, - PullRequest
1 голос
/ 05 ноября 2019

Мой массив начинается так:

Array
(
    [report] => Cost History
    [dimensions] => Array
        (
            [0] => Array
                (
                    [time] => Array
                        (
                            [0] => Array
                                (
                                    [label] => Total
                                    [name] => total
                                )

                            [1] => Array
                                (
                                    [name] => 2018-11
                                    [label] => 2018-11
                                    [direct] => 
                                    [populated] => 1
                                    [excluded] => 
                                    [extended] => 
                                    [sort_order] => 
                                    [parent] => -1
                                )

                            [2] => Array
                                (
                                    [name] => 2018-12
                                    [label] => 2018-12
                                    [direct] => 
                                    [populated] => 1
                                    [excluded] => 
                                    [extended] => 
                                    [sort_order] => 
                                    [parent] => -1
                                )

[time] [0] -> [13] создает заголовок. Я хочу общий столбец в конце. Далее у меня есть

            [1] => Array
                (
                    [Category] => Array
                        (
                            [0] => Array
                                (
                                    [label] => Total
                                    [name] => total
                                )

                            [1] => Array
                                (
                                    [name] => sqs
                                    [label] => Simple Service
                                    [direct] => 
                                    [populated] => 
                                    [excluded] => 
                                    [extended] => 
                                    [sort_order] => 
                                    [parent] => -1
                                )


Это на том же уровне, что и время, и должно быть моим первым общим столбцом внизу, есть [0] -> [281] строк. затем у меня есть данные.

    [data] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [0] => 59639.827459504
                        )

                    [1] => Array
                        (
                            [0] => 0.4566711208
                        )

                    [2] => Array
                        (
                            [0] => 
                        )

                    [3] => Array
                        (
                            [0] => 
                        )

                    [4] => Array
                        (
                            [0] => 39.2084171093
                        )

Эти [данные] находятся на уровне [измерений], первый уровень массива предназначен для столбцов 1 -> [13]. и второй уровень для строк 1 -> [281]. с первой строкой внизу с итоговым значением и [data] вторым массивом total [0] в конце каждой строки. поэтому $ 59639,82 в правом нижнем углу.

далее мне нужно удалить все строки, которые в сумме = 0.

Вот то, с чего я начал, дает мне верхний ряд и первый столбец.

$json = json_decode($result, true);
$header        = $json['dimensions'][0]['time'];
$file = fopen('file/test.html', 'w');
$header1 = array();
$header1[0] = '<h2>Combined cost report ACR AMA</h2><table border="3">' . PHP_EOL . '<tr>' . PHP_EOL .  '<th>Services</th>' . PHP_EOL;
foreach($header as $item) {
  $header1[] = '<th>' .  $item['label'] . '</th>' . PHP_EOL;
}
$v = $header1[1];
unset($header1[1]);
$header1[] = $v;
$header1[] = '</tr>' . PHP_EOL;
#$header1 = array_reverse($header1);
$header2 = implode("",$header1);
fwrite($file, $header2);
$service = array();
$service1 = array();
$services = $json['dimensions'][1]['Category'];
foreach($services as $item) {
  $service[] = '<tr>';
  $service[] = '<td>' . $item['label'] . '</td>';
  $service[] = '</tr>';
}
$v = $service[0];
unset($service[0]);
$service[] = $v;
$service = implode("",$service);
fwrite($file, $service);
$close = '</table>';
fwrite($file, $close);
fclose($file);

Что у меня есть

Что я хочу

...