Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 747
Mert Nuhoglu Avatar asked Nov 15 '12 10:11

Mert Nuhoglu


2 Answers

json_encode takes a depth argument. Do this:

echo '<pre>' . json_encode($your_array, JSON_PRETTY_PRINT, $depth) . '</pre>';

like image 127
rosell.dk Avatar answered Sep 27 '22 16:09

rosell.dk


Here is the function for this issue:

function slice_array_depth($array, $depth = 0) {
    foreach ($array as $key => $value) {
        if (is_array($value)) {
            if ($depth > 0) {
                $array[$key] = slice_array_depth($value, $depth - 1);
            } else {
                unset($array[$key]);
            }
        }
    }

    return $array;
}

Use this function to slice an array to depth you need, than simply var_dump() or print_r() the sliced array :)

like image 33
Dan K.K. Avatar answered Sep 27 '22 16:09

Dan K.K.