Задать вопрос
@iljaGolubev

В чём смысл передавать array_reverse в foreach без явной необходимости обратного порядка элементов?

Часто встречаю код типа
foreach (array_reverse($array) as $v) {
                /// any code
            }

В чём смысл array_reverse?
примеры:
тыц или дыц
К коду в котором действительно нужно изменить порядок (с ключами или нет) - вопросов нет.

UPD.
array_reverse(array $array, bool $preserve_keys = false): array
Принимает массив array и возвращает новый массив, содержащий элементы исходного массива в обратном порядке.
Значит, одна из причин - оставить исходный массив нетронутым.
Но время выполнения при array_reverse существенно больше...
Единственная ли это причина?

UPD 2
После бурного тыканья меня носом - формулирую единственно верный ответ: "Использовать array_reverse если нет необходимости перевернуть массив - смысла нет (бесполезная лишняя операция)."
Собственно, я так и думал. Но сомневался. Поэтому спросил. Неудачно.
Признаю: поторопился, плохо сформулировал вопрос, ссылки на "примеры" только ухудшили ситуацию. А потом вообще "нагородил всякого".
Что я хотел узнать: "Может есть что-то такое не документированное в PHP при foreach(array_reverse) чего я не знаю."
Как, (ещё один неудачный) например
$string = "abc";
$c = $string[2]; // 'c'
$string[2]='X'; // 'abX'
  • Вопрос задан
  • 227 просмотров
Подписаться 1 Средний 3 комментария
Пригласить эксперта
Ответы на вопрос 2
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Для ответов на подобные вопросы всегда полезно использовать логику.
Например:
Если необходимости в обратном порядке элементов нет, то array_reverse не нужна.
Если array_reverse используется - значит, скорее всего, необходимость есть, но вы её просто не видите.

Это универсальный способ, который позволяет ответить на можество подобных вопросов.

"оставить исходный массив нетронутым" причиной не является.
Ответ написан
Adamos
@Adamos
тыц или дыц

В первом случае реверсится стек, имеющий глаза да видит, не знающий термина да погуглит.
Во втором - сложнее. Код разворачивает заголовки. Если в них несколько раз по-разному указано значение одного и того же ключа - ему будет присвоено первое из значений, более поздние перепишутся. А если встречается начало заголовка "^HTTP/" - то отбрасывается все, что было до него.

В обоих случаях заявление, что "без явной необходимости" - просто глупость.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы