はじめに
実務にて、階層が深い連想配列を var_dump で出力すると省略されて値を確認できないので、省略させない方法を教えてほしいという質問が何度かあり、それを解決した情報になります。ソースコードをコピペ(コピー&ペースト)するだけで簡単に流用ができます。
ソースコード
echo '<pre>';
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);
ini_set('xdebug.var_display_max_depth', -1);
var_dump($array);
exit;
検証環境
- Apache 2.2.34 / マニュアル
- Google Chrome 85.0.4183.83
- MAMP 5.5 / マニュアル
- MySQL 5.7.26 / マニュアル
- PHP 7.3.8 / マニュアル
解決
Xdebug の Variable Display Features に答えがあります。
xdebug.var_display_max_children は、配列の子要素とオブジェクトのプロパティ量を制御しています。初期値は 128、制限を無効にするには -1 を設定します。
xdebug.var_display_max_data は、変数を出力するときに表示される最大文字列長を制御しています。初期値は 512、制限を無効にするには -1 を設定します。
xdebug.var_display_max_depth は、配列要素とオブジェクトプロパティのネストされたレベルの数を制御しています。初期値は 3、最大値は 1023、制限を無効にするには -1 を設定します。
PHP で解決する場合、ini_set で設定オプションの値を設定します。
ini_set('xdebug.var_display_max_children', -1);
ini_set('xdebug.var_display_max_data', -1);
ini_set('xdebug.var_display_max_depth', -1);
php.ini で解決する場合、下記の記述を追加します。
xdebug.var_display_max_children = -1
xdebug.var_display_max_data = -1
xdebug.var_display_max_depth = -1
.htaccess で解決する場合、下記の記述を追加します。
php_value xdebug.var_display_max_children -1
php_value xdebug.var_display_max_data -1
php_value xdebug.var_display_max_depth -1
以上です。
おわりに
省略しない var_dump のソースコードをメモ帳や Slack に貼り付けて残すのはもうヤメだ。