PHP Foreach循环不使用break

时间:2012-03-13 14:57:49

标签: php arrays loops

我想创建这个循环

<li class="royalSlide">
    <div class="celebFixSlider">
        <a href=""><img src="" /></a>
        <a href=""><img src="" /></a>
        <a href=""><img src="" /></a>
        <a href=""><img src="" /></a>
        <a href=""><img src="" /></a>
        <a href=""><img src="" /></a>
    </div>
</li>

<li class="royalSlide">
    <div class="celebFixSlider">
        <a href=""><img src="" /></a>
        <a href=""><img src="" /></a>
        <a href=""><img src="" /></a>
        <a href=""><img src="" /></a>
        <a href=""><img src="" /></a>
        <a href=""><img src="" /></a>
    </div>
</li>

LI和DIV元素是第一个循环,链接是每个数组的6个行块。

$imagePath="//site.com/images/celeb1208/";
$productPath="//site.com/product.php?prodref=";
$array = array(
    "632_white" => "celeb1208_317_large.jpg",
     "631_white" => "celeb1208_316_large.jpg",
     "630_white" => "celeb1208_315_large.jpg",
     "629_white" => "celeb1208_314_large.jpg",
     "628_white" => "celeb1208_313_large.jpg",
     "627_white" => "celeb1208_312_large.jpg",
     "532_white" => "celeb1208_311_large.jpg",
     "531_white" => "celeb1208_310_large.jpg",
     "530_white" => "celeb1208_309_large.jpg",
     "529_white" => "celeb1208_308_large.jpg",
     "528_white" => "celeb1208_307_large.jpg",
     "527_white" => "celeb1208_306_large.jpg"
);

$i=0;
foreach ($array as $key => $val)
{      
  $i++; 

        echo '
        <li class="royalSlide">
            <div class="celebFixSlider">
                <a href="'.$productPath.''.$key.'">
                <img src="'.$val.'" />
        </a>';
       if($i==6){
            echo '</div>
            </li>';
            break;            
        }

}

在6个项目之后,中断只是停止代码,它不会暂停并在侧面重新创建循环??对不起,如果我不清楚。

5 个答案:

答案 0 :(得分:3)

break;命令将完全停止循环。也许你希望continue;跳过continue关键字之后的内容,然后再从它停止的地方再次循环。

你需要的是没有休息而且没有继续。:

$i=0;
echo '<li class="royalSlide"><div class="celebFixSlider">';
foreach ($array as $key => $val)
{
  $i++;
    echo '
            <a href="'.$productPath.''.$key.'">
            <img src="'.$val.'" />
    </a>';
   if($i==6){
        echo '</div>
        </li><li class="royalSlide"><div class="celebFixSlider">';
    }

}
echo '</div></li>';

答案 1 :(得分:3)

// getting data ready
foreach ($array as $key => $val) {
  $array[$key] = array(
    "href" => $productPath.$key,
    "img"  => $imagePath.$val
  );
}
$data = array_chunk($array,2);

// printing it out
?>
<?php foreach ($data as $array): ?>
<li class="royalSlide">
    <div class="celebFixSlider">
<?php   foreach ($array as $row): ?>
        <a href="<?=$row['href']?>"><img src="<?=$row['img']?>" /></a>
<?php   endforeach ?>
    </div>
</li>
<?php endforeach ?>

答案 2 :(得分:2)

使用“继续”代替“休息”;

Break将停止循环

由于

答案 3 :(得分:0)

尝试使用此循环

$i=0;
foreach ($array as $key => $val)
{      
  $i++;
  if(($i % 6) == 0){
    echo '<li class="royalSlide"><div class="celebFixSlider">';
  }

  echo '<a href="'.$productPath.''.$key.'"><img src="'.$val.'" /></a>';

  if(($i % 6) == 0 && $i!=0){
    echo '</div></li>';
  }
}

答案 4 :(得分:0)

所以你应该使用它:

 echo '<li class="royalSlide">
        <div class="celebFixSlider">';

 $i=0;
 foreach ($array as $key => $val)
 {
   $i++; 

    echo '
            <a href="'.$productPath.''.$key.'">
            <img src="'.$val.'" />
    </a>';
   if($i==6){
        echo '</div>
        </li>
        <li class="royalSlide">
              <div class="celebFixSlider">';
    }

 }