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 :: Версия для печати :: Нужна помощь по Foreach, делает в 2 раза больше итераций
Форумы портала PHP.SU » » Вопросы новичков » Нужна помощь по Foreach, делает в 2 раза больше итераций

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

1. dudok_alkash - 18 Февраля, 2019 - 18:25:57 - перейти к сообщению
В каком случае возможно что форич делает больше итераций ровно в 2 раза чем элементов в масиве? Например в масиве 1 элемент итераций будет 2, 3 элемента - итераций будет 6...
2. file.shreder - 18 Февраля, 2019 - 19:10:36 - перейти к сообщению
Да foreach так наверное не делает, разе что если ошибка какая то в коде... Ты бы сам код показал бы
3. Строитель - 18 Февраля, 2019 - 20:55:15 - перейти к сообщению
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
4. file.shreder - 18 Февраля, 2019 - 21:21:57 - перейти к сообщению
Строитель пишет:
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



а какой в этом смысл?
5. Строитель - 18 Февраля, 2019 - 21:31:06 - перейти к сообщению
file.shreder, это у топик-стартера нужно спросить, я лишь показал, как добиться такого поведения в foreach.
6. LIME - 19 Февраля, 2019 - 11:38:44 - перейти к сообщению
Строитель пишет:
Это возможно в случае модификации исходного массива, путём его передачи в foreach по ссылке
или при итерации по результату mysql_fetch_array
var_dump массива первым делом для начала в конце концов
(Добавление)
и код итерации

 

Powered by ExBB FM 1.0 RC1