Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:循环遍历对象数组,并在第一行显示所有记录的总和_Php_Loops - Fatal编程技术网

PHP:循环遍历对象数组,并在第一行显示所有记录的总和

PHP:循环遍历对象数组,并在第一行显示所有记录的总和,php,loops,Php,Loops,假设我有以下数组: $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是两条记录的总和假设您想要输出一个HTM

假设我有以下数组:

$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是两条记录的总和

假设您想要输出一个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>';
编辑:更改代码以反映输入中的更改


请注意,有更好的方法可以简单地计算总和。此方法通过单循环数据生成所需的显示和总和。

在开始打印表格之前,您需要计算总计。然后您可以在表的第一行显示它

$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>";

物体在哪里?您使用的代码是什么时候?你遇到了什么问题?你要哪张桌子?DB?Json?这不是PHP数组的语法。嗨,Tony,你能给我们展示一下你的解决方案吗,即使它不能满足你的要求,告诉我们你有什么问题吗?你真的有一个包含两个json字符串的数组吗?@Tony,让我们知道你自己尝试过什么代码。这样我们就可以帮助你说出你需要改正的地方。要求为您编写整个程序不是一个好方法。这也是一个循环程序。您需要将PHP代码添加到循环中。