这些是 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 settings are explained in the official documentation。
我知道这是一个超级旧的帖子,但我认为这可能仍然有帮助。
如果您对阅读 json 格式感到满意,您可以将 var_dump 替换为:
return json_encode($myvar);
我一直在使用它来帮助解决我一直在构建的具有一些深度嵌套数组的服务。这将返回数组的每一层,而不会截断任何内容或要求您更改 php.ini 文件。
此外,因为 json_encoded 数据是一个字符串,这意味着您可以轻松地将其写入错误日志
error_log(json_encode($myvar));
它可能不是每种情况的最佳选择,但它是一种选择!
'.json_encode($myvar, JSON_PRETTY_PRINT).'';
我知道这已经晚了,但它可能会有一些用处:
echo "<pre>";
print_r($array);
echo "</pre>";
print_r()
不是 var_dump 的替代品。
或者您可以使用替代方法:
https://github.com/php-sage/sage
它在零设置下工作,并且比 Xdebug 的 var_dump 具有更多的功能。要使用 Sage 即时绕过嵌套限制,只需使用
+d( $variable ); // append `+` to the dump call
检查 Xdebbug's var_dump settings,尤其是这些设置的值:
xdebug.var_display_max_children
xdebug.var_display_max_data
xdebug.var_display_max_depth
我想推荐 var_export($array)
- 它不显示类型,但它会生成可在代码中使用的语法 :)
有时文件中的 var_export 非常有用。
file_put_contents(__DIR__.'/temp.txt', var_export($var, true), FILE_APPEND);
例如,如果您正在生产服务器上调试某些东西。
不定期副业成功案例分享
php_value xdebug.var_display_max_depth 5
php_value xdebug.var_display_max_children 256
php_value xdebug.var_display_max_data 1024