Size: a a a

2021 January 16

R

Retytc in phpGeeks
Ну вот в foreach как минимум одну переменную нужно использовать
источник

k

kaktus778 in phpGeeks
Retytc
Привет. Скажите, есть ли способ обойти массив без использования дополнительных переменных?
next + while(true) ))
источник

Р

Роман Погромист... in phpGeeks
kaktus778
next + while(true) ))
Геморно трохи. Там такие костыли для выхода из цикла и, чтобы один элемент (первый или последний) не похерить, творить нужно.

Если массив не нужен потом,  array_shift можно, а в условии while проверять на 0 длину массива.
источник

Р

Роман Погромист... in phpGeeks
Retytc
Ну вот в foreach как минимум одну переменную нужно использовать
а зачем такой изврат? )
источник

Р

Роман Погромист... in phpGeeks
миллионы массивов рекурсивно прокручиваются? )
источник

R

Retytc in phpGeeks
Роман Погромист
а зачем такой изврат? )
Да тест проходил. Там нужно было вывести данные из массива (типа база) без использования других переменных. Ну это странно. В итоге через foreach сделал.
источник

V

Vasily in phpGeeks
мм.. while (next($arr)) ?
источник

ДЩ

Дмитрий Щербаков... in phpGeeks
foreach $items as &$item
источник

Р

Роман Погромист... in phpGeeks
Retytc
Да тест проходил. Там нужно было вывести данные из массива (типа база) без использования других переменных. Ну это странно. В итоге через foreach сделал.
Если реально миллионы уровней вложенности у массива, то не сильно и странно, ибо одна лишняя перем. сожрет память.
Но такая вложенность - это косяк архитектуры.
источник

Р

Роман Погромист... in phpGeeks
Vasily
мм.. while (next($arr)) ?
а если элемент равен булевому false?
источник

Р

Роман Погромист... in phpGeeks
Дмитрий Щербаков
foreach $items as &$item
под ссылку тоже память выделяется.
источник

V

Vasily in phpGeeks
Роман Погромист
а если элемент равен булевому false?
то выйдет из цикла
источник

ДЩ

Дмитрий Щербаков... in phpGeeks
Я придумал ) echo json_encode($items) теперь это проблема фронта, а про его ограничения ничего не сказано )
источник

Р

Роман Погромист... in phpGeeks
ну да.
и массив [1, false, 5, 9, 7, ...] только до 2-го элемента "просканируется"
источник

Р

Роман Погромист... in phpGeeks
Дмитрий Щербаков
Я придумал ) echo json_encode($items) теперь это проблема фронта, а про его ограничения ничего не сказано )
фронтедеры тебя сейчас прокляли. ))
источник

R

Retytc in phpGeeks
Vasily
мм.. while (next($arr)) ?
А подробнее? В массиве есть два массива с авторами и с книгами. 'Authors'=>.., 'books'=>..
Нужно вывести все книги. Хотя бы просто название title
источник

V

Vasily in phpGeeks
Retytc
А подробнее? В массиве есть два массива с авторами и с книгами. 'Authors'=>.., 'books'=>..
Нужно вывести все книги. Хотя бы просто название title
ну вот если там false нету в значениях, то прокатит
источник

R

Retytc in phpGeeks
Vasily
ну вот если там false нету в значениях, то прокатит
Нету
источник

Р

Роман Погромист... in phpGeeks
Vasily
ну вот если там false нету в значениях, то прокатит
не совсем.

так прокатит:
echo current($arr);
while (next($arr))
 echo current($arr);

о первом элементе забывать не стоит.
и о том, что указатель мог быть где-то раньше смещен быть.

все таки,
while (count($arr)>0)
echo array_shift($arr);

надежнее (при условии, что массив больше не нужен).
источник

V

Vasily in phpGeeks
источник