I often want to output an array for debugging purposes, but using var_dump() or print_r() on an array that includes true / false values and class objects can be problematic — false values appear empty, and class objects can include too much information. I wrote the following recursive static method (presented here as a function) to pre-filter an array for readability when using print_r() or var_dump().
function make_pretty_array( $mixed, $flatten = false ) {
	$ret = '';
	if ( is_array( $mixed ) ) {
		foreach ( $mixed as $key => $val ) {
			$val = make_pretty_array( $val, $flatten );	// recurse for value
			if ( $flatten ) {
				$ret .= $key.'='.$val.', ';
			} else {
				if ( is_object( $mixed[$key] ) )
					unset ( $mixed[$key] );	// dereference the value
				$mixed[$key] = $val;
			}
		}
		if ( $flatten )
			$ret = '('.trim( $ret, ', ' ).')';
		else $ret = $mixed;
	} elseif ( $mixed === false )
		$ret = 'false';
	elseif ( $mixed === true )
		$ret = 'true';
	elseif ( $mixed === null )
		$ret = 'null';
	elseif ( $mixed === '' )
		$ret = '\'\'';
	elseif ( is_object( $mixed ) )
		$ret = 'object '.get_class( $mixed );
	else $ret = $mixed;
	return $ret;
}
The make_pretty_array() function above can return an array (default), or flatten the array into a single text string.
Example usage:
print_r( make_pretty_array( $array ) );
Example output:
Array
(
    [id] => 2504
    [name] => post
    [is_post] => true
    [is_taxonomy] => false
    [is_user] => false
    [obj] => object WpssoProUtilPost
)
(id=2504, name=post, obj=object WpssoProUtilPost, is_post=true, is_taxonomy=false, is_user=false)