Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Остановить вложенные циклы
 
 автор: IceGhost   (26.04.2010 в 01:00)   письмо автору
 
 

Есть такой код:
<?php
  $col 
""$row ""$page ""$t ""$u "";
  for (
$i 0$i 3$i++) // Страницы
  
{
    
$page '<table border="1">' $page;
    for (
$j 0$j 4$j++) // Строки
    
{
      
$row "<tr>" $row;
      for (
$k 0$k 2$k++) // Столбцы
      
{
        
$col "<td>" $col$u++;
        
$col =  $col "№$u";
        
$col $col "</td>";
        
$row .= $col$col "";
      }
      
$row $row "</tr>";
      
$page .= $row$row "";
    }
    
$page $page "</table><br>";
    
$t .= $page$page "";
  }
  echo 
$t;
?>

Он выводит номера. Так вот задача состоит в том, чтобы при достижении какого-либо определенного номера, все циклы бы останавливались.
Я сделал так:
<?php
  $col 
""$row ""$page ""$t ""$u "";
  for (
$i 0$i 3$i++) // Страницы
  
{
    
$page '<table border="1">' $page;
    for (
$j 0$j 4$j++) // Строки
    
{
      
$row "<tr>" $row;
      for (
$k 0$k 2$k++) // Столбцы
      
{
        
$col "<td>" $col$u++;
        
$col =  $col "№$u"; if ($u == 17$i $j $k 1000;
        
$col $col "</td>";
        
$row .= $col$col "";
      }
      
$row $row "</tr>";
      
$page .= $row$row "";
    }
    
$page $page "</table><br>";
    
$t .= $page$page "";
  }
  echo 
$t;
?>

То есть всем счетчикам циклов присваиваю значения, при которых эти циклы выполняться не будут.
Есть ли лучшее решение? И можно ли как-нибудь усовешенствовать код (не используя столько вложенных циклов)?

  Ответить  
 
 автор: neadekvat   (26.04.2010 в 07:50)   письмо автору
 
   для: IceGhost   (26.04.2010 в 01:00)
 

break

[поправлено модератором]

  Ответить  
 
 автор: IceGhost   (26.04.2010 в 10:52)   письмо автору
 
   для: neadekvat   (26.04.2010 в 07:50)
 

Про break не слышали? о.О

Слышал. Но для того, чтобы остановить все циклы, этот самый break вместе с условием надо поместить в каждый цикл, что плохо.

  Ответить  
 
 автор: IceGhost   (26.04.2010 в 13:09)   письмо автору
 
   для: IceGhost   (26.04.2010 в 10:52)
 

Итак, вариант с кучей for я переделал. Теперь код содержит один for, два if и два ?. Работает корректно.
Выкладывать код пока не буду, ибо очень хочу взглянуть на вариант товарища Usta, который обещал его предоставить. Сразу скажу, что на БД можно забить и выводить просто номера (так делают коды, которые я предоставил в первом сообщении темы).

  Ответить  
 
 автор: Саня   (26.04.2010 в 13:45)   письмо автору
 
   для: IceGhost   (26.04.2010 в 10:52)
 

У break есть опциональный параметр. Прочитайте о нём в документации.

  Ответить  
 
 автор: IceGhost   (26.04.2010 в 14:09)   письмо автору
 
   для: Саня   (26.04.2010 в 13:45)
 

Не знал, учту.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования