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