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 :: Нужна помощь по Foreach, делает в 2 раза больше итераций

 PHP.SU

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


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

> Без описания
dudok_alkash
Отправлено: 18 Февраля, 2019 - 18:25:57
Post Id


Новичок


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


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




В каком случае возможно что форич делает больше итераций ровно в 2 раза чем элементов в масиве? Например в масиве 1 элемент итераций будет 2, 3 элемента - итераций будет 6...
 
 Top
file.shreder
Отправлено: 18 Февраля, 2019 - 19:10:36
Post Id


Посетитель


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


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

[+]


Да foreach так наверное не делает, разе что если ошибка какая то в коде... Ты бы сам код показал бы

(Отредактировано автором: 18 Февраля, 2019 - 19:11:09)

 
 Top
Строитель Модератор
Отправлено: 18 Февраля, 2019 - 20:55:15
Post Id



Участник


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


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




dudok_alkash пишет:
В каком случае возможно что форич делает больше итераций ровно в 2 раза чем элементов в масиве? Например в масиве 1 элемент итераций будет 2, 3 элемента - итераций будет 6...
Это возможно в случае модификации исходного массива, путём его передачи в foreach по ссылке:
PHP:
скопировать код в буфер обмена
  1. $arr = [1, 2, 3];
  2.  
  3. $all = count($arr) * 2;
  4.  
  5. foreach ($arr as $k => &$item) {
  6.     if ($k >= $all) {
  7.         break;
  8.     }
  9.     $arr[] = $k;
  10. }
  11.  
  12. echo "Всего итераций: $k"; // 6
 
 Top
file.shreder
Отправлено: 18 Февраля, 2019 - 21:21:57
Post Id


Посетитель


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


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

[+]


Строитель пишет:
dudok_alkash пишет:
В каком случае возможно что форич делает больше итераций ровно в 2 раза чем элементов в масиве? Например в масиве 1 элемент итераций будет 2, 3 элемента - итераций будет 6...
Это возможно в случае модификации исходного массива, путём его передачи в foreach по ссылке:
PHP:
скопировать код в буфер обмена
  1. $arr = [1, 2, 3];
  2.  
  3. $all = count($arr) * 2;
  4.  
  5. foreach ($arr as $k => &$item) {
  6.     if ($k >= $all) {
  7.         break;
  8.     }
  9.     $arr[] = $k;
  10. }
  11.  
  12. echo "Всего итераций: $k"; // 6



а какой в этом смысл?
 
 Top
Строитель Модератор
Отправлено: 18 Февраля, 2019 - 21:31:06
Post Id



Участник


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


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




file.shreder, это у топик-стартера нужно спросить, я лишь показал, как добиться такого поведения в foreach.
 
 Top
LIME
Отправлено: 19 Февраля, 2019 - 11:38:44
Post Id


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


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


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




Строитель пишет:
Это возможно в случае модификации исходного массива, путём его передачи в foreach по ссылке
или при итерации по результату mysql_fetch_array
var_dump массива первым делом для начала в конце концов
(Добавление)
и код итерации
 
 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