为了简单起见,假设我有以下数组:
$a = array();
$a[0]['lab'] = 1;
$a[0]['name'] = 'test1';
$a[1]['lab'] = 1;
$a[1]['name'] = 'test2';
$a[2]['lab'] = 2;
$a[2]['name'] = 'test3';
$a[3]['lab'] = 2;
$a[3]['name'] = "test4";
$a[4]['lab'] = 2;
$a[4]['name'] = "test5";
请记住,该数组的长度是完全可变的,并且与每个实验室相关联的项目数量也可能会有所不同。每个实验室可能有一个,可能有 100 个。
我想要的 HTML 结构如下:
<div class="parent"> <!-- Records for lab == 1 -->
<div class="child">test1</div>
<div class="child">test2</div>
</div>
<div class="parent"> <!-- Records for lab == 2 -->
<div class="child">test3</div>
<div class="child">test4</div>
<div class="child">test5</div>
</div>
我目前有一个带有一堆额外逻辑的 for 循环,这很丑陋/效率低下,偶尔会错过最后一个“父”div 的结束标记。我知道有一种更优雅的方法可以做到这一点,我很想看看其他人想出了什么。
** 编辑:
这是我现在的逻辑,它实际上适用于我抛出的测试用例,但它看起来很糟糕:
<?php
$labId = 0;
for($i = 0; $i < count(a); $i++)
{
if(($i+1) < count($a)) { $j = $i + 1;}
if($labId == 0 || $labId != $a[$i]['lab'])
{
echo '<div class="parent">';
}
echo '<div class="child">'.$a['name'].'</div>';
if(($a[$j]['lab'] != $labId && $a[$i]['lab'] != $labId && $labId != 0) || count($a) == 1)
{
echo '</div>';
}
$labId = $a[$i]['lab'];
}
?>