Odniesienie wykrywania w tablicy z innej funkcji

Używam więc metody pinowej, ale referencja jest wykrywana o jeden poziom za późno:

$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);

dostaję1 2 3 1 2 3 rec

Ale oczekuję1 2 3 rec

Jeśli tylko to zrobiętest($arr) to działa, ale problem polega na tym, że muszę zawinąć funkcję testową do innej, która akceptuje wartości nie odwołań :(

Czy w jakiś sposób mogę wykryć odniesienie w odpowiednim momencie dzięki funkcji pakowania?

questionAnswers(3)

yourAnswerToTheQuestion