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
Форумы портала PHP.SU :: Версия для печати :: Помогите правильно построить цикл
Форумы портала PHP.SU » » Вопросы новичков » Помогите правильно построить цикл

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

1. imediasun - 22 Ноября, 2013 - 17:21:14 - перейти к сообщению
Здравствуйте мне необходимо добиться следующей записи
#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
2. OrmaJever - 22 Ноября, 2013 - 17:44:35 - перейти к сообщению
Мне кажется вы занимаетесь ерундой. Не понятные операции, зачем они надо?
3. imediasun - 22 Ноября, 2013 - 17:48:23 - перейти к сообщению
хочу этот слайдер сделать динамическим
http://learn[dot]javascript[dot]ru/play/hMpwob
Да и вообще интересно что я не так сделал, там же должна быть единица
4. IllusionMH - 22 Ноября, 2013 - 18:00:09 - перейти к сообщению
imediasun, меньше бездумно нужно пихать постинкремент в условия циклов.
Если сразу не видно - вооружайтесь дебагером и построчно смотрите как меняются переменные.
5. OrmaJever - 22 Ноября, 2013 - 18:14:04 - перейти к сообщению
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. }
6. imediasun - 22 Ноября, 2013 - 20:06:55 - перейти к сообщению
прокомментируйте пожалуйста
PHP:
скопировать код в буфер обмена
  1.  
  2. <?=($i==3?1:$i+1);?>)<?=($i==3?'{':',')?>
  3.  

Я понял это запатая, прочитал внимательнее и понял
7. OrmaJever - 22 Ноября, 2013 - 20:10:43 - перейти к сообщению

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

если $i != 3 то будет запятая, а если последняя итерация то фигурная скобка
8. imediasun - 22 Ноября, 2013 - 20:18:40 - перейти к сообщению
спасибо вам большое за полный ответ

 

Powered by ExBB FM 1.0 RC1