note 63435 deleted from function.var-export by bjori

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

« previous php.notes (#106242) next »