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]   

> Без описания
imediasun
Отправлено: 22 Ноября, 2013 - 17:21:14
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


Здравствуйте мне необходимо добиться следующей записи
#slide1:checked ~ .side-controls label:nth-of-type(2),
#slide2:checked ~ .side-controls label:nth-of-type(3),
#slide3:checked ~ .side-controls label:nth-of-type(1) {
border-left: 40px solid #000;
right: -55px;
}
Я пытаюсь осуществить это следующим методом

PHP:
скопировать код в буфер обмена
  1.  
  2. <?$x=0;
  3.         $y=3;
  4.         while ($x++<10) {
  5.         $z=$x;
  6.         if ($x==$y){
  7.         $z=$y;
  8.         $w=1;
  9.         }
  10.         else
  11.         {
  12.         $w=$x+1;
  13.         }
  14.         if ($x==$y) break;
  15.         if (!isset ($children[$x-1]) ) break;
  16.         ?>
  17.         #slide<?=$x;?>:checked ~ .side-controls label:nth-of-type(<?=$w;?>),
  18.         {
  19.           border-left: 40px solid #000;
  20.           right: -55px;
  21.         }
  22.         <?
  23.         }
  24.         ?>
  25.  

Но почему то получается следующее
#slide1:checked ~ .side-controls label:nth-of-type(2),
#slide2:checked ~ .side-controls label:nth-of-type(3),
#slide3:checked ~ .side-controls label:nth-of-type(4) {
border-left: 40px solid #000;
right: -55px;
}
Почему же в последнем nth-of-type получается 4 если есть условие что когда $x достигнит 3 то $w будет равняться 1
 
 Top
OrmaJever Модератор
Отправлено: 22 Ноября, 2013 - 17:44:35
Post Id



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


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


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




Мне кажется вы занимаетесь ерундой. Не понятные операции, зачем они надо?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
imediasun
Отправлено: 22 Ноября, 2013 - 17:48:23
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


хочу этот слайдер сделать динамическим
http://learn[dot]javascript[dot]ru/play/hMpwob
Да и вообще интересно что я не так сделал, там же должна быть единица

(Отредактировано автором: 22 Ноября, 2013 - 17:51:44)

 
 Top
IllusionMH
Отправлено: 22 Ноября, 2013 - 18:00:09
Post Id



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


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


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




imediasun, меньше бездумно нужно пихать постинкремент в условия циклов.
Если сразу не видно - вооружайтесь дебагером и построчно смотрите как меняются переменные.

(Отредактировано автором: 22 Ноября, 2013 - 18:04:30)

 
 Top
OrmaJever Модератор
Отправлено: 22 Ноября, 2013 - 18:14:04
Post Id



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


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


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




imediasun пишет:
вообще интересно что я не так сделал

Что вы сделали не так? Наверное всё. Для вашей цели нужно всего пару строк.

PHP:
скопировать код в буфер обмена
  1. <? for($i=1; $i<4; ++$i) : ?>
  2. #slide<?=$i;?>:checked ~ .side-controls label:nth-of-type(<?=($i==3?1:$i+1);?>)<?=($i==3?'{':',')?>
  3.  
  4. <? endfor; ?>
  5.     border-left: 40px solid #000;
  6.     right: -55px;
  7. }


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
imediasun
Отправлено: 22 Ноября, 2013 - 20:06:55
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


прокомментируйте пожалуйста
PHP:
скопировать код в буфер обмена
  1.  
  2. <?=($i==3?1:$i+1);?>)<?=($i==3?'{':',')?>
  3.  

Я понял это запатая, прочитал внимательнее и понял

(Отредактировано автором: 22 Ноября, 2013 - 20:09:27)

 
 Top
OrmaJever Модератор
Отправлено: 22 Ноября, 2013 - 20:10:43
Post Id



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


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


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





если $i==3 то выводим 1 иначе $i+1

если $i != 3 то будет запятая, а если последняя итерация то фигурная скобка


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
imediasun
Отправлено: 22 Ноября, 2013 - 20:18:40
Post Id


Частый посетитель


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


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

[+][+][+][+][+]


спасибо вам большое за полный ответ
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB