Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Вложенные циклы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
mindcraft
Отправлено: 09 Сентября, 2010 - 12:40:35
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Здравствуйте!
Хочу попросить совета в след. задаче:
Есть некоторое кол-во пунктов меню на сайте. Разным пунктам назначаются разные стили (css). Стилей 11, а пунктов становится больше... Прежде был простой цикл увеличивающий переменную до 11, затем эта переменная выводилась, как класс пункта меню:

вывод
CODE (html):
скопировать код в буфер обмена
  1. <div class='menu'><a class='m\$i' href='%URL'>%NAME</a></div>

Теперь же необходимо увеличивать кол-во пунктов меню, не увеличивая кол-во стилей.
Т.е. вместо простого цикла указанного выше нужен цикл считающий $i до 11, а потом начинающий заново...
Пробовал:
PHP:
скопировать код в буфер обмена
  1.  
  2. for ($i = 1; $i<50 ; $i++) {
  3.         if ($i > 11) {
  4.                 for ($i = 1; $i<11 ; $i++) {
  5.                 if ($i=11) break;
  6.                 }
  7.         }
  8. }
  9.  

Естественно не работает, а сообразить где ошибка не могу.
Заранее спасибо за помощь.
 
 Top
ALEN
Отправлено: 09 Сентября, 2010 - 12:52:54
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Честно говоря даже не читал ничего, но для чего:
if ($i=11) break;

если наш цикл просто не доходит до 11 + ты приравниваешь а не сравниваешь переменную с числом

А теперь по поводу стилей:
В условии у нас 2 переменных должно быть стили и пункты:
(Добавление)
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. #$i = пункты
  3. $k=1; #$k = стили
  4. for ($i = 1;$i<50;$i++) {
  5. echo "<div class='menu'><a class='m{$k}' href='#'>Пункт {$i} : Стиль {$k}</a></div>";
  6. if($k>9){ $k=1; } else { $k=$k+1; }
  7. }
  8. ?>

(Отредактировано автором: 09 Сентября, 2010 - 13:00:28)

 
 Top
mindcraft
Отправлено: 09 Сентября, 2010 - 13:03:53
Post Id


Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Сент. 2010  


Помог: 0 раз(а)




Нашел ошибку.
Точнее, понял, как это сделать правильно:
PHP:
скопировать код в буфер обмена
  1. for($n=0;$n<2;$n++) {
  2. for($i=1;$i<=11;$i++) {
  3. }
  4. }

До этого, очевидно, тупил Улыбка
 
 Top
ALEN
Отправлено: 09 Сентября, 2010 - 13:04:56
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




Твой пример работать правильно не будет!!!!
(Добавление)
В твоем случае:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. for ($i=0;$i<2;$i++) {
  3. for($k=1;$k<=11;$k++) {
  4. echo "<div class='menu'><a class='m{$k}' href='#'>Пункт {$i} : Стиль {$k}</a></div>";
  5. }}
  6. ?>


Выведит:
Пункт 0 : Стиль 1
Пункт 0 : Стиль 2
Пункт 0 : Стиль 3
Пункт 0 : Стиль 4
Пункт 0 : Стиль 5
Пункт 0 : Стиль 6
Пункт 0 : Стиль 7
Пункт 0 : Стиль 8
Пункт 0 : Стиль 9
Пункт 0 : Стиль 10
Пункт 0 : Стиль 11
Пункт 1 : Стиль 1
Пункт 1 : Стиль 2
Пункт 1 : Стиль 3
Пункт 1 : Стиль 4
Пункт 1 : Стиль 5
Пункт 1 : Стиль 6
Пункт 1 : Стиль 7
Пункт 1 : Стиль 8
Пункт 1 : Стиль 9
Пункт 1 : Стиль 10
Пункт 1 : Стиль 11
 
 Top
JustUserR
Отправлено: 09 Сентября, 2010 - 15:13:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




mindcraft Для того чтобы реализовать повторящееся использование требуемых операций внутри цикла с некоторым заданным шагом можно использовать условие эквивалентности по классу вычетов - то есть внутри цикла по счетчику $i вы формируете набор из N условий каждое из которых определяет действие для определенного остатка от деления $i на N При этом если дейтсвия являются однотипными и итерационными то можно использовать более простой пример - в результате которого будут выведены некоторые элементы с классами от 0 до 10
PHP:
скопировать код в буфер обмена
  1. for($i=0;$i<99999999;$i++)
  2. {$cur_class=$i%11;
  3. echo "$i is inside $cur_class class";
  4. }


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB