我在WAMP上使用xdebug (php_xdebug-2.1.2-5.3-vc9.dll)。当我在一个大对象或变量上使用var_dump时,它不会显示完整的变量。

array
'node' => 
  array
    'my_form' => 
      array
        'form' => 
          array
            ...

如果不进行xdebug,就会显示出预期的结果。我查看了文档,但没有找到解决方案。有人知道我如何解决这个问题,以便xdebug var_dump显示完整的对象吗?


当前回答

我知道这是一个非常老的帖子,但我认为这可能仍然有帮助。

如果你喜欢阅读json格式,你可以用以下格式替换你的var_dump:

return json_encode($myvar);

我一直在使用它来帮助排除我一直在构建的具有一些深度嵌套数组的服务的故障。这将返回数组的每一层,而不需要截断任何东西,也不需要更改php.ini文件。

此外,由于json_encoded数据是一个字符串,这意味着您可以很容易地将其写入错误日志

error_log(json_encode($myvar));

这可能不是所有情况下的最佳选择,但这是一种选择!

其他回答

或者你可以用另一种说法:

https://github.com/php-sage/sage

它可以在零设置的情况下工作,而且比Xdebug的var_dump具有更多的特性。要绕过Sage的嵌套限制,只需使用

 +d( $variable ); // append `+` to the dump call

这些是php.ini中可配置的变量:

; with sane limits
xdebug.var_display_max_depth = 10
xdebug.var_display_max_children = 256
xdebug.var_display_max_data = 1024 


; with no limits
; (maximum nesting is 1023)
xdebug.var_display_max_depth = -1 
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1 

当然,这些也可以在运行时通过ini_set()设置,如果你不想修改php.ini并重新启动web服务器,但需要快速检查更深入的东西,这很有用。

ini_set('xdebug.var_display_max_depth', 10);
ini_set('xdebug.var_display_max_children', 256);
ini_set('xdebug.var_display_max_data', 1024);

Xdebug设置在官方文档中有解释。

检查Xdebbug的var_dump设置,特别是这些设置的值:

xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth

我知道这有点晚了,但可能会有一些用处

echo "<pre>";
print_r($array);
echo "</pre>";

我想推荐var_export($array) -它不显示类型,但它生成语法,你可以在你的代码中使用:)