替代PHP的var_dump,允许限制嵌套数组的深度

Mer*_*glu 8 php debugging var-dump

我尝试在phpsh的命令行上使用var_dump,以获取有关某些变量的调试信息.但该变量包含一个非常深层嵌套的数据结构.因此,使用默认的var_dump输出的信息太多.

我想限制var_dump输出的深度级别.我发现XDebug的var_dump实现允许深度限制,如下所述:http://www.giorgiosironi.com/2009/07/how-to-stop-getting-megabytes-of-text.html

不幸的是,我也无法做到这一点.我还不知道原因.我正在寻找是否有任何替代var_dump实现尝试.

ros*_*.dk 7

json_encode 采用深度参数。做这个:

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


Dan*_*.K. 5

以下是此问题的功能:

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;
}
Run Code Online (Sandbox Code Playgroud)

使用此功能切数组深度需要,不是简单var_dump()print_r()切片阵列:)

  • 我认为他要问的是数组值是数组本身,他想打印它们,以便在一定深度后打印下一个元素。`print_r` 将打印具有所有深度的数组 (2认同)

Abh*_*tia 1

检查一下:

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";
    }
}
Run Code Online (Sandbox Code Playgroud)