gpt4 book ai didi

php - 如何使用PHP在基于键的表中垂直显示数组值?

转载 作者:行者123 更新时间:2023-11-30 22:31:25 24 4
gpt4 key购买 nike

我有一个表格,其中显示了项目名称列表、类别、每个类别中的项目数量以及所有项目的项目总数量。预期结果应如下所示:

Item Name | Item Class | Item Quantity | Total Quantity
| 1 | 4 |
A | 2 | 5 | 11
| 3 | 2 |
-------------------------------------------------------
| 1 | 6 |
B | 2 | 3 | 10
| 3 | 1 |

但是我得到的是这样的:

Item Name | Item Class | Item Quantity | Total Quantity
| 1 | 4 |
A | 2 | 5 |
| 3 | 2 |
----------------------------------------
| 1 | 6 |
B | 2 | 3 |
| 3 | 1 | 11 | 10

如何在同一行中垂直显示总数量及其键(项目名称)和rowspan。我使用数组来显示结果,因为有隐藏的计算。由于计算,我的代码有点复杂,但让我们忽略计算部分,因为它工作正常。如果你需要了解我的计算,你可以从我的个人资料中查看我以前的问题。我现在需要解决的是如何正确显示总量。

这是我的代码:

<table>
<tr>
<td>Item Name</td>
<td>Item Class</td>
<td>Item Quantity</td>
<td>Total Quantity</td>
</tr>

<?php
$result=mysql_query("SELECT * FROM tblitem");
$classqty=array();

while($row = mysql_fetch_array($result)){
$item=$row['itemName'];
$class=$row['itemClassName'];

if(!isset($classqty[$item][$class]))
{
$classqty[$item][$class] = 0;
}
if(is_null($row['itemLocCheckOut'])){
$classqty[$item][$class] += $row['itemQty'];
}
else{
$classqty[$item][$class] -= $row['itemQty'];
}
}

$sum=array();
foreach($classqty as $k1=>$v1){
foreach($v1 as $k2=>$v2){
if(!isset($sum[$k1])){
$sum[$k1] = $v2;
}
else
{
$sum[$k1] += $v2;
}
?>

<tr>
<td><?php echo $k1;?></td>
<td><?php echo $k2;?></td>
<td><?php echo $v2;?></td>
<?php
} /*close second foreach*/
} /*close first foreach*/

foreach($sum as $name=>$total){
?>
<td><?php echo $total;?></td>

<?php
} /*close foreach for $sum*/
?>
</tr>
</table>

P/S:请不要建议我使用SELECT SUM,因为我的计算没有问题,我不能简单地使用SUM,因为我的代码涉及多个系列的计算,总数是根据结果计算的从计算。我的问题只是如何在垂直位置正确显示总量结果。

最佳答案

试试这个...

SELECT *,SUM(IF(item_name='a',itemQuantity,0)) AS itemQuantityA,SUM(IF(item_name='b',itemQuantity,0)) AS itemQuantityB FROM tblitem

使用这个你会直接得到项目A和B的总和。

并且根据您的要求,您可以编辑或自定义此查询。希望这会有所帮助。

关于php - 如何使用PHP在基于键的表中垂直显示数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33796941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com