我想做什么
我有一个数组,看起来像这样 -
Array
(
[0] => Array
(
[id] => 1
[date] => 23-09-2015
[name] => Public Transport
[group_id] => 1
)
[1] => Array
(
[id] => 2
[date] => 23-09-2015
[name] => Parking
[group_id] => 1
)
[2] => Array
(
[id] => 4
[date] => 23-09-2015
[name] => Food
[group_id] => 2
)
[3] => Array
(
[id] => 3
[date] => 23-09-2015
[name] => Fix
[group_id] => 3
)
[4] => Array
(
[id] => 4
[date] => 23-09-2015
[name] => Entertainment
[group_id] => 3
)
)
我想在表中列出它,并根据组 id 进行分组
该小组有交通 [1]、住宿 [2] 和津贴 [3]。 [4] 未分组。
表结构需要如下所示。
ID| Date | Name |
---------------------------------
---------------------------------
1 |23-09-2015|Public Transport
2 |23-09-2015|Parking
---------------------------------
TRANSPORTATION
---------------------------------
3 |23-09-2015|Food
---------------------------------
ACCOMMODATION
---------------------------------
4 |23-09-2015|Fix
---------------------------------
ALLOWANCE
---------------------------------
5 |23-09-2015|Entertainment
如您所见,ID 1 和 2 属于交通,3 属于住宿,4 属于津贴,娱乐没有团体。 如果任何组在数组中没有数据,那么它应该显示 NO DATA AVAILABLE
---------------------------------
3 |23-09-2015|Food
---------------------------------
ACCOMMODATION
---------------------------------
No data available
---------------------------------
ALLOWANCE
---------------------------------
我尝试了什么
<?php
$j = 1;
foreach ($summary as $list) {
if ($j != $list['group_id']) {
if ($j == 1) {
$group = 'Transportation';
} else if ($j == 2) {
$group = 'Accomodation';
} else if ($j == 3) {
$group = 'Allowances';
} else {
$group = '';
}
?>
<tr class="summary-title">
<td colspan="7"><?php echo $group; ?></td>
</tr>
<?php } ?>
<tr>
<td><?php echo $list['id']; ?></td>
<td><?php echo $list['date']; ?></td>
<td><?php echo $list['name']; ?></td>
</tr>
<?php
$j = $list['group_id'];
}
?>
数组按照group_id升序排列。组 ID 的值始终为 1、2、3、4。
我的代码有问题
部分有效。但是当 group_id 数组中没有值时,我无法显示 NO DATA AVAILABLE。此外,如果 group_id = 4 在数组中不可用,则它不会在底部设置 ALLOWANCE,因为数组循环在设置值之前完成。
最佳答案
编辑:删除了整个页面,因为它现在变得困惑了。
$summary = array();
$summary[] = array('id'=>1, 'date'=>"23-09-2915", 'name'=>"Public transpor1", 'group_id'=> 1);
$summary[] = array('id'=>2, 'date'=>"24-09-2915", 'name'=>"Public transpor2", 'group_id'=> 3);
$summary[] = array('id'=>3, 'date'=>"25-09-2915", 'name'=>"Public transpor3", 'group_id'=> 1);
$summary[] = array('id'=>4, 'date'=>"26-09-2915", 'name'=>"Public transpor4", 'group_id'=> 2);
$summary[] = array('id'=>5, 'date'=>"27-09-2915", 'name'=>"Public transpor5", 'group_id'=> 1);
$newarray = array('Transportation'=>array(),'Accomodation'=>array(),'Allowances'=>array(),'Not found'=>array());
foreach ($summary as $list) {
if(isset($list['group_id'])){
$testid = $list['group_id'];
}else{
$testid = 4;
}
if ($testid == 1) {
$group = 'Transportation';
} else if ($testid == 2) {
$group = 'Accomodation';
} else if ($testid == 3) {
$group = 'Allowances';
} else {
$group = 'Not found';
}
$newarray[$group][] = $list;
}
echo "<table>";
foreach($newarray as $key => $array){
echo "<tr><th>".$key."</th></tr>";
if(count($array) > 0){
foreach($array as $row){
echo "<tr><td>".$row['name']."</td></tr>";
}
}else{
echo "<tr><td>Not data</td></tr>";
}
}
echo "</table>";
现在这应该可以满足您的需求,但说真的,要付出一些努力,哈哈。如果您对自己的问题不太清楚,我不会继续编辑它,直到它完成您想要的为止
关于具有内容分组的 PHP 动态表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32738827/