note 63435 added to function.var-export
| From: | fabrice at fabriceh dot com | Date: | Wed, 22 Mar 2006 13:05:07 +0000 |
| Subject: | note 63435 added to function.var-export | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-106240@lists.php.net to get a copy of this message | ||
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...
----
Server IP: 195.221.21.36
Probable Submitter: 82.254.111.119
----
X-Spam-Status: No, hits=3.3 required=5.0 tests=DATE_MISSING,FROM_NO_LOWER,
HTML_MESSAGE autolearn=no version=2.64
----
Manual Page -- http://www.php.net/manual/en/function.var-export.php
Edit -- http://master.php.net/note/edit/63435
Del: integrated -- http://master.php.net/note/delete/63435/integrated
Del: useless -- http://master.php.net/note/delete/63435/useless
Del: bad code -- http://master.php.net/note/delete/63435/bad+code
Del: spam -- http://master.php.net/note/delete/63435/spam
Del: non-english -- http://master.php.net/note/delete/63435/non-english
Del: in docs -- http://master.php.net/note/delete/63435/in+docs
Del: other reasons-- http://master.php.net/note/delete/63435
Reject -- http://master.php.net/note/reject/63435
Search -- http://master.php.net/manage/user-notes.php