note 63435 deleted from function.var-export by bjori
| From: | bjori@php.net | Date: | Wed, 22 Mar 2006 13:07:55 +0000 |
| Subject: | note 63435 deleted from function.var-export by bjori | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-106242@lists.php.net to get a copy of this message | ||
Note Submitter: fabrice at fabriceh dot com
Reason: bad code
----
To avoid "Nesting level too deep - recursive dependency?" Error,
I made a recursive function who store a reference of each array or object inspected at each level of
recursivity.
And so, the function can test if an object or an array was already inspected in higher level
<?php
function my_var_export($var, $return = false, $level=0) {
static $_level_ref = array();
if ($level == 0) $_level_ref = array();
if (is_object($var) || is_array($var))
{
foreach ($_level_ref as $l => $obj)
{
if ($var === $obj) return " recursive depency => level $l ";
}
$_level_ref[$level] = & $var;
} else $_level_ref[$level] = NULL;
if (is_array($var) || is_object($var)) {
$toImplode = array();
foreach ($var as $key => $value) {
$toImplode[] = my_var_export($key, true,$level+1).' =>
'.my_var_export($value, true,$level+1);
}
$sep = '<br />'.str_pad(' ', ($level+1)*8 , " ");
$code = 'array('.$sep.implode($sep, $toImplode).')';
if ($return) return $code;
else echo $code;
} else {
return var_export($var, $return);
}
}
?>
I don't have fully tested this function, but it seems to do what it supposed to...