fork(2) download
  1. <?php
  2.  
  3. $recursive = array(42);
  4. $recursive['recursive'] = &$recursive;
  5.  
  6. $nonrec = array(42);
  7. $nonrec[] = $nonrec; // not recursive, this is a static copy of the array
  8.  
  9.  
  10. echo (int)is_recursive($recursive)."\n";
  11. echo (int)is_recursive($nonrec)."\n";
  12.  
  13.  
  14. function is_recursive(array &$array) {
  15. static $uniqueObject;
  16. if (!$uniqueObject) {
  17. $uniqueObject = new stdClass;
  18. }
  19.  
  20. foreach ($array as &$item) {
  21. if (!is_array($item)) {
  22. continue;
  23. }
  24.  
  25. $item[] = $uniqueObject;
  26. $isRecursive = end($array) === $uniqueObject;
  27. array_pop($item);
  28. if ($isRecursive) {
  29. return true;
  30. }
  31. }
  32.  
  33. return false;
  34. }
  35.  
  36.  
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
1
0