- <?php 
-   
- $recursive['recursive'] = &$recursive; 
-   
- $deepRecursive = array(42); 
- $deepRecursive['this']['recursion']['happens']['deeper'] = $recursive; // just for fun 
-   
- $nonrec[] = $nonrec; // not recursive, this is a static copy of the array 
-   
-   
- echo "Recursive:      ".(int)is_recursive($recursive)."\n"; 
- echo "Deep recursive: ".(int)is_recursive($deepRecursive)."\n"; 
- echo "Non-recursive:  ".(int)is_recursive($nonrec)."\n"; 
-   
-     static $uniqueObject; 
-     if (!$uniqueObject) { 
-         $uniqueObject = new stdClass; 
-     } 
-   
-     $alreadySeen[] = &$array; 
-   
-     foreach ($array as &$item) { 
-             continue; 
-         } 
-   
-         $item[] = $uniqueObject; 
-         $recursionDetected = false; 
-         foreach ($alreadySeen as $candidate) { 
-             if (end($candidate) === $uniqueObject) { 
-                 $recursionDetected = true; 
-                 break; 
-             } 
-         } 
-   
-   
-         if ($recursionDetected || is_recursive($item, $alreadySeen)) { 
-             return true; 
-         } 
-     } 
-   
-     return false; 
- } 
-   
				PD9waHAKCiRyZWN1cnNpdmUgPSBhcnJheSg0Mik7CiRyZWN1cnNpdmVbJ3JlY3Vyc2l2ZSddID0gJiRyZWN1cnNpdmU7CgokZGVlcFJlY3Vyc2l2ZSA9IGFycmF5KDQyKTsKJGRlZXBSZWN1cnNpdmVbJ3RoaXMnXVsncmVjdXJzaW9uJ11bJ2hhcHBlbnMnXVsnZGVlcGVyJ10gPSAkcmVjdXJzaXZlOyAvLyBqdXN0IGZvciBmdW4KCiRub25yZWMgPSBhcnJheSg0Mik7CiRub25yZWNbXSA9ICRub25yZWM7IC8vIG5vdCByZWN1cnNpdmUsIHRoaXMgaXMgYSBzdGF0aWMgY29weSBvZiB0aGUgYXJyYXkKIAogCmVjaG8gIlJlY3Vyc2l2ZTogICAgICAiLihpbnQpaXNfcmVjdXJzaXZlKCRyZWN1cnNpdmUpLiJcbiI7CmVjaG8gIkRlZXAgcmVjdXJzaXZlOiAiLihpbnQpaXNfcmVjdXJzaXZlKCRkZWVwUmVjdXJzaXZlKS4iXG4iOwplY2hvICJOb24tcmVjdXJzaXZlOiAgIi4oaW50KWlzX3JlY3Vyc2l2ZSgkbm9ucmVjKS4iXG4iOwoKZnVuY3Rpb24gaXNfcmVjdXJzaXZlKGFycmF5ICYkYXJyYXksIGFycmF5ICYkYWxyZWFkeVNlZW4gPSBhcnJheSgpKSB7CiAgICBzdGF0aWMgJHVuaXF1ZU9iamVjdDsKICAgIGlmICghJHVuaXF1ZU9iamVjdCkgewogICAgICAgICR1bmlxdWVPYmplY3QgPSBuZXcgc3RkQ2xhc3M7CiAgICB9CgogICAgJGFscmVhZHlTZWVuW10gPSAmJGFycmF5OwoKICAgIGZvcmVhY2ggKCRhcnJheSBhcyAmJGl0ZW0pIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCRpdGVtKSkgewogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CgogICAgICAgICRpdGVtW10gPSAkdW5pcXVlT2JqZWN0OwogICAgICAgICRyZWN1cnNpb25EZXRlY3RlZCA9IGZhbHNlOwogICAgICAgIGZvcmVhY2ggKCRhbHJlYWR5U2VlbiBhcyAkY2FuZGlkYXRlKSB7CiAgICAgICAgICAgIGlmIChlbmQoJGNhbmRpZGF0ZSkgPT09ICR1bmlxdWVPYmplY3QpIHsKICAgICAgICAgICAgICAgICRyZWN1cnNpb25EZXRlY3RlZCA9IHRydWU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgYXJyYXlfcG9wKCRpdGVtKTsKCiAgICAgICAgaWYgKCRyZWN1cnNpb25EZXRlY3RlZCB8fCBpc19yZWN1cnNpdmUoJGl0ZW0sICRhbHJlYWR5U2VlbikpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBmYWxzZTsKfQo=