🥰
PHPの便利技:デバッグ用の関数
多次元配列を見やすくする関数
開発・デバッグ作業では、 var_dump()
や print_r()
で変数に代入されている値を確認しますが、多次元配列だと確認するのが大変です。
下の関数を使うと、多次元配列が見やすくなりますよ。
// 使い方
include_once('D.php');
D($_POST);
D.php
<?php
function D($value){ // ...
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS,)[0];
echo '<section>';
echo "<div>{$trace['file']} #{$trace['line']}</div>";
_value($value);
echo '</section>';
}
function _value($value){
// ...
switch( $type = gettype($value) ){
case 'NULL':
echo 'NULL';
break;
case 'boolean':
echo $value ? 'TRUE': 'FALSE';
break;
case 'double':
case 'integer':
echo $value;
break;
case 'string':
switch( strtolower($value) ){
case 'null':
case 'true':
case 'false':
case is_int($value):
case is_numeric($value):
$value = "'{$value}'";
break;
}
echo $value;
break;
case 'array':
echo _table($value);
break;
case 'object':
var_dump($value);
break;
default:
echo $type;
var_dump($value);
}
}
function _table($array){
// ...
echo '<table style="border:1px solid black; border-collapse: collapse">';
foreach( $array as $key => $value ){
echo '<tr>';
echo '<th style="border: 1px solid black;">'.$key.'</th>';
echo '<td style="border: 1px solid black;">';
switch( gettype($value) ){
case 'array':
_table($value);
break;
default:
_value($value);
break;
}
echo '</td>';
echo '<tr>';
}
echo '</table>';
}
Discussion