note 63435 added to function.var-export

From: 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

« previous php.notes (#106240) next »