<?php
$recursive['recursive'] = &$recursive;
$nonrec[] = $nonrec; // not recursive, this is a static copy of the array
echo (int)is_recursive($recursive)."\n";
echo (int)is_recursive($nonrec)."\n";
function is_recursive
(array &$array) { static $uniqueObject;
if (!$uniqueObject) {
$uniqueObject = new stdClass;
}
foreach ($array as &$item) {
continue;
}
$item[] = $uniqueObject;
$isRecursive = end($array) === $uniqueObject; if ($isRecursive) {
return true;
}
}
return false;
}
PD9waHAKCiRyZWN1cnNpdmUgPSBhcnJheSg0Mik7CiRyZWN1cnNpdmVbJ3JlY3Vyc2l2ZSddID0gJiRyZWN1cnNpdmU7Cgokbm9ucmVjID0gYXJyYXkoNDIpOwokbm9ucmVjW10gPSAkbm9ucmVjOyAvLyBub3QgcmVjdXJzaXZlLCB0aGlzIGlzIGEgc3RhdGljIGNvcHkgb2YgdGhlIGFycmF5CgoKZWNobyAoaW50KWlzX3JlY3Vyc2l2ZSgkcmVjdXJzaXZlKS4iXG4iOwplY2hvIChpbnQpaXNfcmVjdXJzaXZlKCRub25yZWMpLiJcbiI7CgoKZnVuY3Rpb24gaXNfcmVjdXJzaXZlKGFycmF5ICYkYXJyYXkpIHsKICAgIHN0YXRpYyAkdW5pcXVlT2JqZWN0OwogICAgaWYgKCEkdW5pcXVlT2JqZWN0KSB7CiAgICAgICAgJHVuaXF1ZU9iamVjdCA9IG5ldyBzdGRDbGFzczsKICAgIH0KCiAgICBmb3JlYWNoICgkYXJyYXkgYXMgJiRpdGVtKSB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkaXRlbSkpIHsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQoKICAgICAgICAkaXRlbVtdID0gJHVuaXF1ZU9iamVjdDsKICAgICAgICAkaXNSZWN1cnNpdmUgPSBlbmQoJGFycmF5KSA9PT0gJHVuaXF1ZU9iamVjdDsKICAgICAgICBhcnJheV9wb3AoJGl0ZW0pOwogICAgICAgIGlmICgkaXNSZWN1cnNpdmUpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWxzZTsKfQoK