PHP 循环 table 列
PHP looping table columns
我的薪水table是这样的:
我想这样显示数据
如何在 PHP 上使用 foreach 显示它?
编辑:
这是我的示例数据
{
[
'id': 1,
'salary_name': 'Basic Salary',
'salary_type': 'Allowance',
'salary_amount': 5000,
],
[
'id': 2,
'salary_name': 'Health Benefits',
'salary_type': 'Allowance',
'salary_amount': 500,
],
[
'id': 3,
'salary_name': 'Overtime',
'salary_type': 'Allowance',
'salary_amount': 300,
],
[
'id': 4,
'salary_name': 'Absence',
'salary_type': 'Cut',
'salary_amount': 100,
],
[
'id': 5,
'salary_name': 'Tax',
'salary_type': 'Cut',
'salary_amount': 500,
]
}
我试过这样的代码
<table width='100%' class='table-bordered'>
<tr>
<th align='left' colspan='2' width='50%'>Salary</th>
<th align='left' colspan='2' width='50%'>Salary Cuts</th>
</tr>
foreach($salary->detil as $dg){
<tr>
if($dg->salary_type=='Allowance'){
<td>$dg->salary_name</td>
<td>$dg->salary_amount</td>
<td> </td>
<td> </td>
} else{
<td> </td>
<td> </td>
<td>$dg->salary_name</td>
<td>$dg->salary_amount</td>;
}
</tr>
}
</table>
这是输出:
我不知道如何合并这些列
为要打印的 table 填充数组可能是一个不错的选择:
<table width='100%' class='table-bordered'>
<tr>
<th align='left' colspan='2' width='50%'>Salary</th>
<th align='left' colspan='2' width='50%'>Salary Cuts</th>
</tr>
<?php
$sal=0;
$salcuts=0;
foreach($salary->detil as $dg){
if($dg->salary_type=='Allowance'){
$r[$sal][1] = $dg->salary_name;
$r[$sal[[2] = $dg->salary_amount;
$sal = $sal + 1;
} else{
$r[$salcuts][3] = $dg->salary_name;
$r[$salcuts][4] = $dg->salary_amount;
$salcuts = $salcuts + 1;
}
}
for($x=0; $x<max($sal,$salcuts); $x++){
echo "<tr>";
for($c=1; $c<=4; $c++) {
echo "<td>" . empty($r[$x][c])?" ":$r[$x][c] . "</td>";
}
echo "</tr>";
}
?>
</table>
我的薪水table是这样的:
我想这样显示数据
如何在 PHP 上使用 foreach 显示它?
编辑: 这是我的示例数据
{
[
'id': 1,
'salary_name': 'Basic Salary',
'salary_type': 'Allowance',
'salary_amount': 5000,
],
[
'id': 2,
'salary_name': 'Health Benefits',
'salary_type': 'Allowance',
'salary_amount': 500,
],
[
'id': 3,
'salary_name': 'Overtime',
'salary_type': 'Allowance',
'salary_amount': 300,
],
[
'id': 4,
'salary_name': 'Absence',
'salary_type': 'Cut',
'salary_amount': 100,
],
[
'id': 5,
'salary_name': 'Tax',
'salary_type': 'Cut',
'salary_amount': 500,
]
}
我试过这样的代码
<table width='100%' class='table-bordered'>
<tr>
<th align='left' colspan='2' width='50%'>Salary</th>
<th align='left' colspan='2' width='50%'>Salary Cuts</th>
</tr>
foreach($salary->detil as $dg){
<tr>
if($dg->salary_type=='Allowance'){
<td>$dg->salary_name</td>
<td>$dg->salary_amount</td>
<td> </td>
<td> </td>
} else{
<td> </td>
<td> </td>
<td>$dg->salary_name</td>
<td>$dg->salary_amount</td>;
}
</tr>
}
</table>
这是输出:
为要打印的 table 填充数组可能是一个不错的选择:
<table width='100%' class='table-bordered'>
<tr>
<th align='left' colspan='2' width='50%'>Salary</th>
<th align='left' colspan='2' width='50%'>Salary Cuts</th>
</tr>
<?php
$sal=0;
$salcuts=0;
foreach($salary->detil as $dg){
if($dg->salary_type=='Allowance'){
$r[$sal][1] = $dg->salary_name;
$r[$sal[[2] = $dg->salary_amount;
$sal = $sal + 1;
} else{
$r[$salcuts][3] = $dg->salary_name;
$r[$salcuts][4] = $dg->salary_amount;
$salcuts = $salcuts + 1;
}
}
for($x=0; $x<max($sal,$salcuts); $x++){
echo "<tr>";
for($c=1; $c<=4; $c++) {
echo "<td>" . empty($r[$x][c])?" ":$r[$x][c] . "</td>";
}
echo "</tr>";
}
?>
</table>