PHP Foreach Loop не использует разрыв - PullRequest
0 голосов
/ 13 марта 2012

Я хочу создать этот цикл

<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 ]

3 голосов
/ 13 марта 2012
// 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 ?>
3 голосов
/ 13 марта 2012

Команда break; полностью остановит цикл.Возможно, вы хотите, чтобы continue; пропустил то, что следует после ключевого слова continue, и снова сделал цикл с того места, где оно было остановлено.

Вам нужно без перерыва и без продолжения.

2 голосов
/ 13 марта 2012

Используйте «продолжить» вместо «перерыв»;

Перерыв остановит цикл

Спасибо

0 голосов
/ 13 марта 2012

Так что вы должны использовать это:

 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">';
    }

 }
0 голосов
/ 13 марта 2012

Попробуйте это вместо своей петли

$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>';
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...