bolk (bolk) wrote,
bolk
bolk

Category:

Особенность PHP 7.2 (и 7.1)

Потихоньку смотрю как наш продукт запускается на ПХП версии 7.2 — у нас сейчас используется 7.0, но очень хочется двинуться дальше. В хитросплетениях кода нашёл очень странный баг, который был разбросан по разным строчкам кода, а в сконцентрированном виде он выглядит так:

$arr = [[1]];
array_walk($arr, function(){});
array_map('array_shift', $arr);
var_dump($arr);

В ПХП 7.0 массив выведется в неизменном виде, а в версии 7.2 (и 7.1, как оказалось) единица исчезнет. Очевидно, что array_walk создаёт какие-то ссылки внутри массива, из-за чего array_shift начинает получать внутренний массив по ссылке и сдвигать. Но никаким другим способом (например, прямым созданием массива со ссылками) мне такое поведение получить не удаётся.



Ссылка на оригинал.
Subscribe

  • От этого помогает обыкновенная советская…

    В прошлом году всё жаловался, что постоянно болею — действительно, иногда заболевал по нескольку раз в месяц. Никак не мог разобраться в чём дело,…

  • Тарелки на берегу

    В прошедшие выходные мы с приятелем собрались в импровизированный поход на один из островов на Волге — порыбачить и отдохнуть. К сожалению…

  • «Ночной пылесос»

    Дочка, как наверное вообще все дети, не очень-то любит убираться в своей комнате. И чтобы заставить её перед сном навести хотя бы косметический…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments