Итак, я использую метод pin, но ссылка обнаружена на одном уровне слишком поздно:
$pin = time();
function wrap($arr){
test($arr);
}
function test(&$arr){
global $pin;
if(in_array($pin, $arr))
return print "ref";
$arr[] = $pin;
foreach($arr as &$v){
if($v != $pin){
if(is_array($v))
return test($v);
print $v . " ";
}
}
}
$array = array(1, 2, 3);
$array[4] = &$array;
wrap($array);
Я получаю 1 2 3 1 2 3 rec
Но я ожидаю 1 2 3 rec
Если я просто делаю test($arr)
, тогда он работает, но проблема в том, что мне нужно обернуть тестовую функцию внутри другой, которая принимает значения не ссылки: (
Есть ли способ обнаружить ссылку в нужный момент с помощью моей функции обертки?