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

Тема в разделе "Как сделать...", создана пользователем mxa, 26 янв 2013.

  1. mxa

    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
     
    }
     
  2. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.725
    Симпатии:
    2.100
    а что мешает сделать так?
    PHP:
     <?php $count 0;
    $max_loop 10 (скажем);
        <?
    php foreach ($daypart as $dp=>$data) {?>
      .....
        <?php if ($count == $max_loop) break; ?>
      .....
        <?php $count ++; ?>
        <?php }; ?>
     
    mxa нравится это.
  3. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    884
    Симпатии:
    540
    между <?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 нравится это.
  4. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.725
    Симпатии:
    2.100
    ты про
    чтоли?
     
  5. mxa

    mxa Постоялец

    Регистр.:
    7 июн 2008
    Сообщения:
    133
    Симпатии:
    37
    Всем спасибо.
    Этот код заработал как надо:
    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; ?>
     
    ipbfan2008 нравится это.