概要
PHPをサーバー上で実行する場合、変数の内容をブラウザーに表示させるいくつかの方法を整理。いずれの方法でも改行にPHP_EOL
が使われるので、ブラウザー上では改行として機能せず空白文字になる。
var_export()
、print_r()
については、結果の文字列を表示させるのではなく、戻り値として扱うことができる。
jason_encode()
は趣旨が少し違うが一応加えておく。
コンソールに表示する場合に対して、PHP_EOL
が改行として機能せず空白文字になる。
準備
以下のような変数・値を表示させる。
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 |
var_dump($int, $str); echo '<br>'; // int(100) // string(9) "文字列" var_dump($arr); echo '<br>'; // array(4) { [0]=> int(1) [1]=> float(2) [2]=> string(5) "three" [3]=> string(3) "四" } var_dump($asc); echo '<br>'; // array(3) { ["one"]=> int(1) [2]=> string(3) "弐" ["実数3"]=> float(3) } |
var_export
var_export()
は、var_dump()
より簡潔な形で表示する。
- 改行コードは全て空白文字になる
- 結果をPHPのソースにコピー・ペーストして使える(改行が空白文字となっていてもok)
- キー・値の文字列はシングルクォートで囲まれる
- 実数は小数部がゼロでも
1.0
のように表示される - 配列の各要素末尾にカンマが付く
1 2 3 4 5 6 7 8 9 10 11 |
var_export($int); echo '<br>'; // 100 var_export($str); echo '<br>'; // '文字列' var_export($arr); echo '<br>'; // array ( 0 => 1, 1 => 2.0, 2 => 'three', 3 => '四', ) var_export($asc); echo '<br>'; // array ( 'one' => 1, 2 => '弐', '実数3' => 3.0, ) |
print_r
print_r()
はvar_export()
より更に簡潔に表示する。
- 改行コードは全て空白文字になる
- 文字列はクォートで囲まれない
- 実数の小数部がゼロの時、整数と同じ表示になる
- 配列の要素末尾にカンマは付かない
1 2 3 4 5 6 7 8 9 10 11 |
print_r($int); echo '<br>'; // 100 print_r($str); echo '<br>'; // 文字列 print_r($arr); echo '<br>'; // Array ( [0] => 1 [1] => 2 [2] => three [3] => 四 ) print_r($asc); echo '<br>'; // 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) . '<br>'; "100" echo json_encode($str, JSON_UNESCAPED_UNICODE) . '<br>'; "文字列" echo json_encode($arr, JSON_UNESCAPED_UNICODE) . '<br>'; "Array\n(\n [0] => 1\n [1] => 2\n [2] => three\n [3] => 四\n)\n" echo json_encode($asc, JSON_UNESCAPED_UNICODE) . '<br>'; "Array\n(\n [one] => 1\n [2] => 弐\n [実数3] => 3\n)\n" |
以下の様にすれば、'\n'
が改行としては機能しないが空白にはなる。
1 2 |
eval('echo ' . json_encode($asc, JSON_UNESCAPED_UNICODE) . ';'); // Array ( [one] => 1 [2] => 弐 [実数3] => 3 ) |