基于场域价值的Foreach计数器

时间:2014-03-05 17:49:13

标签: php arrays loops

我有一些代码列出了房屋,以及每个房屋的床位数量。我想使用带计数器的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']改变时回显表头。

3 个答案:

答案 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;
    }
}