我有一些代码列出了房屋,以及每个房屋的床位数量。我想使用带计数器的foreach循环,所以当床数改变时,我可以回显表的末尾,以及新表的开头(以便将待售房屋与卧室数量分开)。这就是我现在所拥有的;
foreach ($unitsForSaleData as $row) {
if($units_for_sale['beds'] == 0){
echo '<h1> Studios For Sale </h1>';
echo $tableTop;
} else {
echo $tableBottom;
echo '<h1>'.$units_for_sale['beds'].' Bedroom Condos For Sale </h1>';
echo $tableTop;
}
$contentHere
}
此代码为每一行生成一个新表,因此它没有用。无论如何要做到这一点?我只希望在$ units_for_sale ['beds']改变时回显表头。
答案 0 :(得分:1)
不需要计数器,只需使用变量来跟踪显示的最后一个。
$last_bed = null;
foreach (...) {
if($units_for_sale['beds'] == 0){
echo '<h1> Studios For Sale </h1>';
echo $tableTop;
} else {
if ($units_for_sale['beds'] !== $last_bed) {
if ($last_bed !== null) { // End previous table
echo $tableBottom;
}
echo '<h1>'.$units_for_sale['beds'].' Bedroom Condos For Sale </h1>';
echo $tableTop; // Start new table
$last_bed = $units_for_sale['beds'];
}
}
... // Display row data here
}
答案 1 :(得分:0)
尝试类似:
$beds = 0;
echo '<h1> Studios For Sale </h1>';
while(notendofloop) // foreach ($array as $val)
{
if($beds != $units_for_sale['beds']){
if ($beds != 0) echo $tableBottom;
echo $tableTop;
$beds = $units_for_sale['beds'];
}
echo '<h1>'.$units_for_sale['beds'].' Bedroom Condos For Sale </h1>';
}
您尚未提供完整循环,因此请使用现有循环详细信息。重要的是在循环之前初始化变量$beds
并检查其中的值以确定何时输出表。
答案 2 :(得分:0)
这是你可以做的事情。在foreach中,您可以在循环声明中添加“count”值。以下是符合您要求的代码:
foreach($units as $key=>$units_for_sale){
if($units_for_sale['beds']!=0){
echo '<h1>'.$units_for_sale['beds'].' Bedroom Condos For Sale </h1>';
echo ($key+1!=count($array)?$tableBottom.$tableTop:$tableBottom;
}else{
echo '<h1> Studios For Sale </h1>';
echo $tableTop;
}
}