- in_array: documentation ( source)
- spl_object_hash: documentation ( source)
<?php
$foo = new \StdClass;
$bar = new \StdClass;
$foo->bar = $bar;
$bar->foo = $foo;
$array = array('foo' => $foo, 'bar' => $bar);
$hash = array();
rwalk($array);
function rwalk($array) {
if (is_array($array)) {
foreach ($array as $key => $value) {
if (is_object($value)) {
$value = (array) $value;
$objHash = spl_object_hash($value);
}
if (is_array($value) && !in_array($objHash, $hash)) {
$hash[] = $objHash;
rwalk($value);
}
}
}
}