@Hint

Вложенные foreach с одним массивом. Гарантирован ли результат?

Есть массив, нужно перебрать все комбинации элементов (вложенные циклы по одному массиву). Безопасно ли использовать foreach? В документации до сих пор есть информация про указатель, который сбивается после foreach. Есть ли гарантия, что код всегда будет работать одинаково? Что php7 или какая-либо другая версия не изменит поведение?
Наткнулся на старый вопрос: stackoverflow.com/questions/2533249/nested-foreach...
Тут говорится о проблеме, что вложенные foreach с одним массивом не работают. Сейчас такой проблемы нет, но не всплывёт ли она снова? Есть ли информация о том, что старое поведение было багом, и подобное более не повторится? Или лучше на всякий случай заранее копировать массив и во вложенном foreach использовать копию?

$a = array('a' => 1, 'b' => 2);
foreach ($a as $k1 => $v1)
{
  foreach ($a as $k2 => $v2)
  {
    echo "{$k1}{$v1}{$k2}{$v2}\n";
  }
}
  • Вопрос задан
  • 374 просмотра
Пригласить эксперта
Ответы на вопрос 1
@RomkaChev
Так как вы уже вышли на достаточный уровень паранои предусмотрительности, то, судя по тому, что вы уже успели погуглить, вам НУЖНО использовать копии.

P.S. Вы же понимаете, что не сможете спокойно спать, если не будете использовать копию? А вдруг в php8 ваш код не заработает? Может быть стоит использовать внутренний цикл for? А вдруг там тоже проблема с указателями? Италик.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы