Задать вопрос
@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";
  }
}
  • Вопрос задан
  • 377 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@RomkaChev
Так как вы уже вышли на достаточный уровень паранои предусмотрительности, то, судя по тому, что вы уже успели погуглить, вам НУЖНО использовать копии.

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

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

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