在循环内循环导致不希望的输出

时间:2012-03-26 15:36:13

标签: php

我有以下循环...

for ($i = 1; $i <= 10; $i++) {
    echo '<span class="srch-val-'.$i.'">'.apply_filters(" $value\n", $value)."</span>";
}

...内

while ( $query->have_posts() ) : $query->the_post();
if ( $keys = get_post_custom_keys() ) {
  echo "<div class='clearfix card-prod ".($i==0?'first':'')."'><span class='card-title'>";
  echo the_title();
  echo "</span>";

  foreach ( (array) $keys as $key ) {
    $keyt = trim($key);
    if ( '_' == $keyt{0} || 'pricing' == $keyt || 'vehicleType' == $keyt || 'coverageRegion' == $keyt || 'locationType' == $keyt )
      continue;
    $values = array_map('trim', get_post_custom_values($key));
    $value = implode($values,', ');
    for ($i = 1; $i <= 10; $i++) {
                echo '<span class="srch-val-'.$i.'">'.apply_filters(" $value\n", $value)."</span>";
            }

  }
   echo "\n"; echo '<img src="wp-content/themes/cafc/images/top-choice.jpg" alt="Top Choice" class="topchoice">';echo '<img src="wp-content/themes/cafc/images/cards/dummy.png" />';      echo the_excerpt()."</div>";}
  $i++;

ENDWHILE;

当我执行我的代码时,说我的while()循环返回4个值,我的for()循环然后输出10个相同的东西,在我的浏览器中显示为...

enter image description here

我想要做的就是每个<span class="srch-val'>都要在每个'srch-val'类之后添加一个数字,所以srch-val-1,srch-val-2等......

2 个答案:

答案 0 :(得分:2)

你的foreach循环中有一个额外的for循环。删除此循环,直接在foreach循环内部执行回显,并在每次实际使用时增加$i

像这样:

$i = 1;
while ( $query->have_posts() )
{
    $query->the_post();
    if ( $keys = get_post_custom_keys() )
    {
        echo "<div class='clearfix card-prod ".($i==0?'first':'')."'><span class='card-title'>";
        echo the_title();
        echo "</span>";

        foreach ( (array) $keys as $key )
        {
            $keyt = trim($key);
            if ( '_' == $keyt{0} || 'pricing' == $keyt || 'vehicleType' == $keyt || 'coverageRegion' == $keyt || 'locationType' == $keyt )
                continue;
            $values = array_map('trim', get_post_custom_values($key));
            $value = implode($values,', ');

            echo '<span class="srch-val-'.$i.'">'.apply_filters(" $value\n", $value)."</span>";
            $i++;    // move the incrementer here so that you only increment when you actually use it.
        }

        echo "\n"; echo '<img src="wp-content/themes/cafc/images/top-choice.jpg" alt="Top Choice" class="topchoice">';echo '<img src="wp-content/themes/cafc/images/cards/dummy.png" />';      echo the_excerpt()."</div>";
    }
}

答案 1 :(得分:0)

您在foreach循环的开头创建一个变量(比如说$counter == 1;

比你的For循环应该是:

for($i = $counter; $i <= $counter+10; $i++){
    //do your span-class thing here
}

在foreach循环结束时执行:$counter += 10;

相关问题