Мне стыдно писать этот вопрос, так как много лет работаю с PHP, но эта ситуация поставила меня в тупик.
foreach ($array as $key => $value)
{
foreach ($array as $second_key => $second_value)
{
if (some_compare($key, $value, $second_key, $second_value))
{
$array[$key] = some_processing($key, $value, $second_key, $second_value);
}
}
}
Проблема в том, что при нескольких прохождениях $array во внешнем цикле изменяется неправильно. Таким образом,
фиксируется только последнее изменение, а все предыдущие игнорируются. Не, я понимаю, что внутри foreach работает с копиями, но изменения в оригинал все же вносятся, или я не понимаю...
Что не так? Как выполнить обработку?
UPD. Задачу решил, вынес вложенный цикл в колбек и все заработало правильно. Тем не менее - что не так с этим языком? Или что я не понимаю?