PHP: цикл по массиву объектов и отображение суммы всех записей в первой строке - PullRequest
0 голосов
/ 13 июня 2019

Допустим, у меня есть следующий массив:

$array = [
    ['time_spent' => 10, 'rate' => 150],
    ['time_spent' => 20, 'rate' => 100]
];

Я хочу, чтобы таблица выглядела следующим образом:
Имеет 2 строки и 4 столбца (затраченное время, ставка, общая сумма, общая сумма):
Первый ряд будет:

10 | 150 | 10 x 150 = 1500 | 3500 

и второй ряд:

20 | 100 | 10 x 200 = 2000 

(3500 - сумма всех записей)

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Вам нужно вычислить общий итог, прежде чем начать печатать таблицу. Затем вы можете показать это в первом ряду таблицы.

$grand_total = 0;
foreach ($array as $item) {
    $grand_total += $item['rate'] * $item['time_spent'];
}

echo "<table>";
foreach ($array as $i => $item) {
    $total = $row['time_spent'] * $row['rate'];
    echo "<tr><td>{$row['time_spent']}</td><td>{$row['rate']}</td>";
    if ($i == 0) { // first row, show grand total
        echo "<td>$total</td><td>$grand_total</td>";
    } else {
        echo "<td colspan='2'>$total</td>";
    }
    echo "</tr>";
}
echo "</table>";
0 голосов
/ 13 июня 2019

Предполагается, что вы хотите вывести таблицу HTML, что-то вроде этого будет работать.

$array= [
    ["time_spent"=> 10, "rate"=> 150], 
    ["time_spent"=> 20, "rate"=> 100] 
];
$html = [];
$sum = 0;
foreach ($array as $i => $row) {        
    $product = $row['rate'] * $row['time_spent'];
    $line = "<tr><td>{$row['time_spent']}</td><td>{$row['rate]'}</td>";
    $line .= "<td>{$row['time_spent']} x {$row['rate']} = {$product}</td>";
    if ($i !== 0) {
        $line .= '</tr>';
    }
    $html[] = $line;
    $sum += $product;
}

$rowCount = count($html);
$html[0] .= "<td rowspan='{$rowCount}'>{$sum}</td></tr>";

echo '<table>' . implode('', $html) . '</table>';

РЕДАКТИРОВАТЬ: Изменен код, чтобы отразить изменения в вводе.

Обратите внимание, что были бы лучшие способы просто рассчитать общую сумму. Этот метод генерирует желаемое отображение вместе с суммой с помощью одного цикла данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...