我在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显示完整的对象吗?


当前回答

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

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

其他回答

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

这些是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设置在官方文档中有解释。

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

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

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

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

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

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

有时文件中的var_export非常有用。

file_put_contents(__DIR__.'/temp.txt', var_export($var, true), FILE_APPEND);

例如,如果您正在调试生产服务器上的某些内容。