概要
PHPをコマンドラインで実行する場合に、変数の内容をコンソールに表示させるいくつかの方法を整理。JavaScriptのconsole.log()
に比べて、何となく帯に短し襷に長し。個人的には使うとしたらview_export()
か。
var_export()
、print_r()
については、結果の文字列を表示させるのではなく、戻り値として扱うことができる。
jason_encode()
は趣旨が少し違うが一応加えておく。
変数の内容をコンソールではなくブラウザーに表示する場合はこちら。
準備
以下のような変数・値を表示させる。
1 2 3 4 5 6 7 8 |
$int = 100; $str = '文字列'; $arr = [1, 2.0, 'three', '四']; $asc = [ 'one' => 1, 2 => '弐', '実数3' => 3.0, ]; |
var_dump
var_dump()
は引数の変数の内容を型まで含めて詳しく表示する。少し冗長。
- 変数ごとの表示後に改行される
- 変数を複数指定しても、別々に実行したのと同じ結果
- キー・値の文字列はダブルクォートで囲まれる
- 実数は
float[1]
の様に表示される
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
var_dump($int, $str); // int(100) // string(9) "文字列" var_dump($arr); // array(4) { // [0]=> // int(1) // [1]=> // float(2) // [2]=> // string(5) "three" // [3]=> // string(3) "四" // } var_dump($asc); // array(3) { // ["one"]=> // int(1) // [2]=> // string(3) "弐" // ["実数3"]=> // float(3) // } |
var_export
var_export()
は、var_dump()
より簡潔な形で表示する。
- 結果をPHPのソースにコピー・ペーストして使える
- 表示後に改行されない
- キー・値の文字列はシングルクォートで囲まれる
- 実数は小数部がゼロでも
1.0
のように表示される - 配列の各要素末尾にカンマが付く
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
var_export($int); echo PHP_EOL; // 100 var_export($str); echo PHP_EOL; // '文字列' var_export($arr); echo PHP_EOL; // array ( // 0 => 1, // 1 => 2.0, // 2 => 'three', // 3 => '四', // ) var_export($asc); echo PHP_EOL; // array ( // 'one' => 1, // 2 => '弐', // '実数3' => 3.0, // ) |
print_r
print_r()
はvar_export()
より更に簡潔に表示する。
- 単純変数の表示後は改行されないが、配列の表示後は改行される
- 文字列はクォートで囲まれない
- 実数の小数部がゼロの時、整数と同じ表示になる
- 配列の要素末尾にカンマは付かない
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
print_r($int); echo PHP_EOL; 100 print_r($str); echo PHP_EOL; 文字列 print_r($arr); Array ( [0] => 1 [1] => 2 [2] => three [3] => 四 ) print_r($asc); Array ( [one] => 1 [2] => 弐 [実数3] => 3 ) |
json_encode
変数の内容をJSON形式で返す。オプションのJSON_UNESCAPED_UNICODE
を指定しないと、マルチバイト文字がHex表示になる。
1 2 3 4 5 6 7 8 9 10 11 |
echo json_encode($int) . PHP_EOL; // "100" echo json_encode($str, JSON_UNESCAPED_UNICODE) . PHP_EOL; // "文字列" echo json_encode($arr, JSON_UNESCAPED_UNICODE) . PHP_EOL; // "Array\n(\n [0] => 1\n [1] => 2\n [2] => three\n [3] => 四\n)\n" echo json_encode($asc, JSON_UNESCAPED_UNICODE) . PHP_EOL; // "Array\n(\n [one] => 1\n [2] => 弐\n [実数3] => 3\n)\n" |
何とか'\n'
を改行として表示するなら、以下の様にするか。
1 2 3 4 5 6 7 |
eval('echo ' . json_encode($asc, JSON_UNESCAPED_UNICODE) . ';'); // Array // ( // [one] => 1 // [2] => 弐 // [実数3] => 3 // ) |