Как прервать foreach в готовом коде с готовым примером

mxa

Постоялец
Регистрация
7 Июн 2008
Сообщения
133
Реакции
37
Сделать возможность прерывать foreach после определенного количества раз, которое тут же можно было бы установить вручную через переменную.

Код в котором надо прерывать через n раз:
PHP:
<?php foreach ($this->forecast as $date=>$daypart) : ?>
    <h1 class="jlwdate"><?=$date?></h1>
<table cellpadding="5" cellspacing="5" border="0">
    <?php foreach ($daypart as $dp=>$data) : ?>
    <tr style="padding-top:10px;" >
        <td width="55"><?=$dayparts[$dp]?></td>
        <td><img src="/components/com_jlweather/img/<?=$data['pict']?>" alt="."></td>
        <td style="font-size:30px;" width="50"><?=$data['t']['min']?></td>
        <td style="font-size:30px;">...</td>
        <td style="font-size:30px;" width="50"><?=$data['t']['max']?></td>
        <td style="font-size:90%">
            <?php if (($data['p']['min']+$data['p']['max']) > 0) : ?>
                <?=JText::_('PRESSURE') ?> <?=$data['p']['min']?>-<?=$data['p']['max']?> <?=JText::_('MM') ?><br/>
            <?php endif; ?>
            <?=JText::_('WIND') ?> <?=$data['w']['min']?>-<?=$data['w']['max']?> <?=JText::_('MC') ?> <br/>
            <?=JText::_('RELATIVE_HUMIDITY') ?>  <?=$data['h']['min']?>-<?=$data['h']['max']?> %
        </td>
    </tr>
    <?php endforeach; ?>
 
</table>
 
<?php endforeach; ?>

Собственно пример кода который прерывает foreach, я без понятия как его вставить в тот код что выше:
PHP:
$max_loop=5; //This is the desired value of Looping
 
$count = 0; //First we set the count to be zeo
 
echo "<h2> Here goes the values</h2>";
 
foreach($my_array as $key => $val) {
 
    echo "The value of $key is $val<br/>"; //Print the value of the Array
 
    $count++; //Increase the value of the count by 1
 
    if($count==$max_loop) break; //Break the loop is count is equal to the max_loop
 
}
 
а что мешает сделать так?
PHP:
 <?php $count = 0;
$max_loop = 10 (скажем);
    <?php foreach ($daypart as $dp=>$data) {?>
  .....
    <?php if ($count == $max_loop) break; ?>
  .....
    <?php $count ++; ?>
    <?php }; ?>
 
  • Нравится
Реакции: mxa
между <?php foreach ($daypart as $dp=>$data) : ?>
и <?php endforeach; ?>
тело цикла. К примеру

PHP:
<?php foreach ($this->forecast as $date=>$daypart) : ?>
<h1 class="jlwdate"><?=$date?></h1>
<?php
$max_loop=5; //This is the desired value of Looping
$count = 0; //First we set the count to be zeo
?>

<table cellpadding="5" cellspacing="5" border="0">
<?php foreach ($daypart as $dp=>$data) : ?>

<tr style="padding-top:10px;" >
<td width="55"><?=$dayparts[$dp]?></td>
<td><img src="/components/com_jlweather/img/<?=$data['pict']?>" alt="."></td>
<td style="font-size:30px;" width="50"><?=$data['t']['min']?></td>
<td style="font-size:30px;">...</td>
<td style="font-size:30px;" width="50"><?=$data['t']['max']?></td>
<td style="font-size:90%">
<?php if (($data['p']['min']+$data['p']['max']) > 0) : ?>
<?=JText::_('PRESSURE') ?> <?=$data['p']['min']?>-<?=$data['p']['max']?> <?=JText::_('MM') ?><br/>
<?php endif; ?>
<?=JText::_('WIND') ?> <?=$data['w']['min']?>-<?=$data['w']['max']?> <?=JText::_('MC') ?> <br/>
<?=JText::_('RELATIVE_HUMIDITY') ?> <?=$data['h']['min']?>-<?=$data['h']['max']?> %
</td>
</tr>
<?php 
$count++; //Increase the value of the count by 1

if($count==$max_loop) break; //Break the loop is count is equal to the max_loop
// этот метод прервёт только foreach ($daypart as $dp=>$data) : цикл.
?>
<?php endforeach; ?>

</table>

<?php endforeach; ?>
 
  • Нравится
Реакции: mxa
Всем спасибо.
Этот код заработал как надо:
PHP:
<?php
$max_loop=2;
$count = 0;
?>       
       
<?php foreach ($this->forecast as $date=>$daypart) : ?>
 
<?php
$count++;
if($count==$max_loop) break;
?>
 
    <h1 class="jlwdate"><?=$date?></h1>
<table cellpadding="5" cellspacing="5" border="0">
    <?php foreach ($daypart as $dp=>$data) : ?>
    <tr style="padding-top:10px;" >
        <td width="55"><?=$dayparts[$dp]?></td>
        <td><img src="/components/com_jlweather/img/<?=$data['pict']?>" alt="."></td>
        <td style="font-size:30px;" width="50"><?=$data['t']['min']?></td>
        <td style="font-size:30px;">...</td>
        <td style="font-size:30px;" width="50"><?=$data['t']['max']?></td>
        <td style="font-size:90%">
            <?php if (($data['p']['min']+$data['p']['max']) > 0) : ?>
                <?=JText::_('PRESSURE') ?> <?=$data['p']['min']?>-<?=$data['p']['max']?> <?=JText::_('MM') ?><br/>
            <?php endif; ?>
            <?=JText::_('WIND') ?> <?=$data['w']['min']?>-<?=$data['w']['max']?> <?=JText::_('MC') ?> <br/>
            <?=JText::_('RELATIVE_HUMIDITY') ?>  <?=$data['h']['min']?>-<?=$data['h']['max']?> %
        </td>
    </tr>
    <?php endforeach; ?>
 
</table>
 
<?php endforeach; ?>
 
Назад
Сверху