Я только что переработал свой алгоритм обнаружения рекурсии в своем любимом проекте dump_r ()
https://github.com/leeoniya/dump_r.php
обнаружение рекурсии объекта не так уж сложно - вы используете spl_object_hash (), чтобы получить уникальный внутренний идентификатор экземпляра объекта, сохранить его в dict и сравнить с ним во время сброса других узлов.
для обнаружения рекурсии массива, я немного озадачен, я не нашел ничего полезного. Сам php способен идентифицировать рекурсию, хотя, кажется, делает это за один цикл слишком поздно. РЕДАКТИРОВАТЬ: Н.В.М., это происходит, где это необходимо:)
$arr = array();
$arr[] = array(&$arr);
print_r($arr);
Должно ли оно прибегать к отслеживанию всего в стеке рекурсии и делать поверхностные сравнения с любым другим элементом массива?
любая помощь будет оценена,
спасибо!