Howdy!I am working on a pretty large project where I needed to dump a human readable form of whatever into the log files... and I thought var_export was too difficult to read. BigueNique at yahoo dot ca has a nice solution, although I needed to NOT modify whatever was being passed to dump.So borrowing heavily from BigueNique's (just reworked his function) and someone's idea over in the object cloning page, I came up with the following function.It makes a complete copy of whatever object you initially pass it, including all recursive definitions and outside objects references, then does the same thing as BigueNique's function. I also heavily reworked what it output, to suit my needs.<?phpfunction var_log(&$varInput, $var_name='', $reference='', $method = '=', $sub = false) { static $output ; static $depth ; if ( $sub == false ) { $output = '' ; $depth = 0 ; $reference = $var_name ; $var = serialize( $varInput ) ; $var = unserialize( $var ) ; } else { ++$depth ; $var =& $varInput ; } $nl = "\n" ; $block = 'a_big_recursion_protection_block'; $c = $depth ; $indent = '' ; while( $c -- > 0 ) { $indent .= '| ' ; } if ( is_array($var) && isset($var[$block])) { $real =& $var[ $block ] ; $name =& $var[ 'name' ] ; $type = gettype( $real ) ; $output .= $indent.$var_name.' '.$method.'& '.($type=='array'?'Array':get_class($real)).' '.$name.$nl; } else { $var = Array( $block => $var, 'name' => $reference ); $theVar =& $var[ $block ] ; $type = gettype( $theVar ) ; switch( $type ) { case 'array' : $output .= $indent . $var_name . ' '.$method.' Array ('.$nl; $keys=array_keys($theVar); foreach($keys as $name) { $value=&$theVar[$name]; var_log($value, $name, $reference.'["'.$name.'"]', '=', true); } $output .= $indent.')'.$nl; break ; case 'object' : $output .= $indent.$var_name.' = '.get_class($theVar).' {'.$nl; foreach($theVar as $name=>$value) { var_log($value, $name, $reference.'->'.$name, '->', true); } $output .= $indent.'}'.$nl; break ; case 'string' : $output .= $indent . $var_name . ' '.$method.' "'.$theVar.'"'.$nl; break ; default : $output .= $indent . $var_name . ' '.$method.' ('.$type.') '.$theVar.$nl; break ; } } -- $depth ; if( $sub == false ) return $output ; }?>Hope it works well for you!