Search code examples
phpdebuggingvar-dump

Alternative var_dump for PHP that allows limiting depth of nested arrays


I try to use var_dump on command line with phpsh in order to get debugging information about some variable. But the variable contains a very deeply nested data structure. Therefore, using the default var_dump outputs too much information.

I want to limit the depth level of var_dump output. I found that XDebug's var_dump implementation allows depth limiting as described here: http://www.giorgiosironi.com/2009/07/how-to-stop-getting-megabytes-of-text.html

Unfortunately, I couldn't make this work neither. I don't know yet the reason for this. I am looking for if there are any alternative var_dump implementations to try.


Solution

  • Check this :

    function print_array($array,$depth=1,$indentation=0){
        if (is_array($array)){
                        echo "Array(\n";
            foreach ($array as $key=>$value){
                if(is_array($value)){
                    if($depth <= 0){
                        echo "max depth reached.";
                    }
                    else{
                        for($i=0;$i<$indentation;$i++){
                            echo "&nbsp;&nbsp;&nbsp;&nbsp;";
                        }
                        echo $key."=Array(";
                        print_array($value,$depth-1,$indentation+1);
                        for($i=0;$i<$indentation;$i++){
                            echo "&nbsp;&nbsp;&nbsp;&nbsp;";
                        }
                        echo ");";
                    }
                }
                else{
                    for($i=0;$i<$indentation;$i++){
                        echo "&nbsp;&nbsp;&nbsp;&nbsp;";
                    }
                    echo $key."=>".$value."\n";
                }
            }
                        echo ");\n";
        }
        else{
            echo "It is not an array\n";
        }
    }