这些是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);
php_value xdebug.var_display_max_depth 5
php_value xdebug.var_display_max_children 256
php_value xdebug.var_display_max_data 1024
- Werner我知道这是一个非常老的帖子,但我想这可能仍然有所帮助。
如果你熟悉阅读json格式,你可以用以下代码替换你的var_dump:
return json_encode($myvar);
我一直在使用这个方法来帮助排查一个我正在构建的服务,该服务包含一些深度嵌套的数组。这个方法可以返回您数组的每个级别,而不会截断任何内容或要求您更改php.ini文件。
此外,由于json_encoded数据是一个字符串,这意味着你可以轻松地将它写入错误日志中。
error_log(json_encode($myvar));
它可能并不是每种情况下的最佳选择,但它是一个选择!
我知道现在可能有些晚了,但这可能会有一些用处:
echo "<pre>";
print_r($array);
echo "</pre>";
print_r()
不是 var_dump 的替代品。 - AnrDaemon或者您可以使用另一种选择:
https://github.com/php-sage/sage
它不需要任何设置,比Xdebug的var_dump功能更强大。要使用Sage在运行时绕过嵌套限制,只需使用:
+d( $variable ); // append `+` to the dump call
请查看Xdebug的var_dump设置,特别是这些设置的值:
xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
我想推荐var_export($array)
- 它不显示类型,但生成的语法可以在你的代码中使用 :)
file_put_contents(__DIR__.'/temp.txt', var_export($var, true), FILE_APPEND);