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]   

> Описание: Помогите с условием цикла
feitosa
Отправлено: 03 Ноября, 2011 - 18:25:42
Post Id


Новичок


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


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




Помогите плиз с условием цикла. Вот пример

есть массив


PHP:
скопировать код в буфер обмена
  1. do {
  2. echo next($a);
  3. }
  4. while(пока курсор массива не окажиться в конце)


как правильно задать условие???

(Отредактировано автором: 03 Ноября, 2011 - 18:26:32)

 
 Top
sKaa
Отправлено: 03 Ноября, 2011 - 18:42:17
Post Id



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


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


А не проще :
PHP:
скопировать код в буфер обмена
  1. foreach($a as $key => $value){
  2.         echo $value;
  3.         }


---
я могу ошибаться, но :
PHP:
скопировать код в буфер обмена
  1.  
  2.     $a = array('1', '2', '3', '4');
  3. do {
  4.     echo next($a);
  5.     }
  6.     while(pos($a) != count($a));
  7.  
  8.  


прошу прощение )) впервый раз фигню написал, зачем то массив скопировал ))
так будет проще

(Отредактировано автором: 03 Ноября, 2011 - 18:58:34)

 
 Top
feitosa
Отправлено: 03 Ноября, 2011 - 18:57:24
Post Id


Новичок


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


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




а если 2 массива

PHP:
скопировать код в буфер обмена
  1. $a = array('1', '2', '3', '4');
  2.  
  3. $b = array('one', 'two', 'three', 'four');
  4.  
  5. do {
  6. echo next($a);
  7. echo next($b);
  8. }
  9. while(пока курсор массива не окажиться в конце)


как тут использовать foreach ??
 
 Top
sKaa
Отправлено: 03 Ноября, 2011 - 19:01:12
Post Id



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


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


Я поправил своё сообщение вверху, погляди.
do while - в данном случае думаю тоже уместно только если оба массива содержат одинаковое кол-во ключей. т.е

причем в твоем коде выше не выводится самое первое значение массива..
надо как-то так :
PHP:
скопировать код в буфер обмена
  1. $a = array('1', '2', '3', '4');
  2. do {
  3.         if(key($a) == 0) echo current($a);
  4.         echo next($a);
  5.     }
  6.     while(pos($a) != count($a));
  7.  

(Отредактировано автором: 03 Ноября, 2011 - 19:04:31)

 
 Top
feitosa
Отправлено: 03 Ноября, 2011 - 19:07:00
Post Id


Новичок


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


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




чёто у меня от условия

браузер виснет =)

(Отредактировано автором: 03 Ноября, 2011 - 19:09:21)

 
 Top
sKaa
Отправлено: 03 Ноября, 2011 - 19:11:35
Post Id



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


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


PHP:
скопировать код в буфер обмена
  1. $a = array('1', '2', '3', '4');
  2. echo count($a).' - count<br>';
  3. $k = 0;
  4. do {
  5.         if($k == 0) echo current($a);
  6.         else echo next($a);
  7.         $k++;
  8.     }
  9.     while($k != count($a));

вот, только что проверил, ничё не виснет.
 
 Top
feitosa
Отправлено: 03 Ноября, 2011 - 19:25:39
Post Id


Новичок


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


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




блин! показываю что у меня

вот массив $dot1 (print_r)

PHP:
скопировать код в буфер обмена
  1. Array ( [0] => 100 [1] => 190 [2] => 50 [3] => 30 [4] => 130 [5] => 165 )


делае по твоему

PHP:
скопировать код в буфер обмена
  1. $k=0;
  2. do {
  3. if($k == 0) {echo current($dot1);}
  4. echo next($dot1).'|<br>';
  5. $k++;
  6. }
  7. while($k != count($dot1));


вот что мне выводит



100 и 190 вмести.... хм.... почему ? и слеш ещё один в конце
 
 Top
sKaa
Отправлено: 03 Ноября, 2011 - 19:32:21
Post Id



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


Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011  
Откуда: Россия г. Нижний Новгород


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

[+]


гляди всё просто
у тебя есть переменная "к" в начале она равна 0.
PHP:
скопировать код в буфер обмена
  1. do {
  2. if($k == 0) echo current($dot1); // Условие срабатывает только пока к==0, курсор массива пока мы не использовали функцию next тоже на нуле, а значит мы выводим самый первый елемент массива ( 100 ).. ошибка в том, что нужно делать так : echo current($dot1).'|<br>';
  3. else echo next($dot1).'|<br>'; // Дальше условие срабатывает если к != 0. и курсор каждый раз сдвигается к след. елементу массива
  4. $k++; // тут перменная к каждый раз увеличивается на 1.
  5. }while($k != count($dot1));

вот ошибка :
PHP:
скопировать код в буфер обмена
  1.  
  2. //вместо
  3. if($k == 0) echo current($dot1);
  4. // нужно
  5. if($k == 0) echo current($dot1).'|<br>';
  6.  

(Добавление)
а слеш в конце сорри, это я затупил ...
условие вот так :
(Добавление)
я сам далеко не гуру))) подсказываю так, как делал бы сам) может великие умы придумают что-то более экзотическое))

(Отредактировано автором: 03 Ноября, 2011 - 19:38:11)

 
 Top
DeepVarvar Супермодератор
Отправлено: 03 Ноября, 2011 - 19:35:22
Post Id



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


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


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




Если массивы не ассоциативные, то так:
PHP:
скопировать код в буфер обмена
  1. $a = array(/* ... */);
  2. $b = array(/* ... */);
  3. for ($i = 0; isset($a[$i]); $i++) {
  4.   echo $a[$i]." - ";
  5.   echo $b[$i]."<br />";
  6.   }

(Добавление)
Сначала подвисли, потом совсем ушли Радость
Если массив один, его вообще вот так (исходя из задачи) вывести можно:
 
 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