1. 概要
本ページで扱う内容は、多くは、マニュアルでは「変数・データ型関連」というカテゴリで分類されています。
わたしは、出力部分を分けたいので、別途ページを作りました(あくまでもメモなので、きちんと体系づいてるわけではない)。
体系づいて書いていないため、本サイトでも「変数・データ型」とかぶっている箇所がありますので、ご注意ください。
「print」等、(標準)出力を扱う関数についてメモしていきます(まぁ、「print」自体は書きませんが)。
本ページは、下記のサイトを参考にさせていただきました。
「PHP: 変数操作 関数」
「【PHP】Laravelのデバッグ・変数の確認方法(var_export, dump, dd関数) #PHP」
2. print_r 型に合わせて出力
詳細は、「PHP: print_r」をご参照ください。
「print_r」は、指定した変数の型に合わせて内容を出力してくれます。
mixed print_r ( mixed $expression [, bool $return = FALSE ] )
第2引数を省略すると、「print_r」の結果は標準出力へ出力されますが、第2引数に「true」を与えると結果をリターン値として戻してくれます。
print(var_dump($_SERVER));
というコードを書いてブラウザで表示すると(改行は「<pre>」で・・・)、下記のような表示が得られます。
Array
(
[REDIRECT_HTTPS] => on
[REDIRECT_SSL_TLS_SNI] => freebsd.sing.ne.jp
[REDIRECT_STATUS] => 200
・・・ 略 ・・・
[REQUEST_TIME] => 1666139840
)
3. var_dump ダンプ
詳細は、「PHP: var_dump」をご参照ください。
参考ページには、下記のように記述されています。
この関数は、指定した式に関してその型や値を含む構造化された情報を 返します。配列の場合、その構造を表示するために各値について再帰的に 探索されます。
var_dump(mixed $value, mixed ...$values): void
というコードを書いてブラウザで表示すると(改行は「<pre>」で・・・)、下記のような表示が得られます。
array(47) {
["REDIRECT_HTTPS"]=>
string(2) "on"
["REDIRECT_SSL_TLS_SNI"]=>
string(18) "freebsd.sing.ne.jp"
["REDIRECT_STATUS"]=>
string(3) "200"
・・・ 略 ・・・
["REQUEST_TIME"]=>
int(1666139840)
}
配列の個数がわかるところはよいですが、それ以外は、前項の「print_r」の方が、視覚的になじみやすいかと思われます。
「var_dump()」は、出力先が標準出力になっているため、「Laravel」では、少々使いにくい。
これを変更するには、「ob_*()」という関数を使用して、出力先を変更してやります。
すなわち、「$data」という変数を出力したいものとして。
ob_start();
var_dump($data);
$text=ob_get_contents();
ob_end_clean();
Log::debug(__LINE__.' $data['.$text.']'.PHP_EOL);
と書けば、「Laravel」のログへ出力されます。
4. var_export ダンプ
「var_export()」は、「var_dump()」に似ていますが、公式のドキュメントによれば、「の関数は var_dump() に似ていますが、 返される表現が有効な PHP コードであるところが異なります。」となっています。
var_export(mixed $value, bool $return = false): ?string
下記のコードを書いて。
<?php
$array = Array("は", "ひ", "ふ");
var_dump($array);
var_export($array);
実行すると、下記の結果が得られます。
array(3) {
[0]=>
string(3) "は"
[1]=>
string(3) "ひ"
[2]=>
string(3) "ふ"
}
array (
0 => 'は',
1 => 'ひ',
2 => 'ふ',
)
なるほど、「var_dump()」より「var_export()」の出力の方が、洗練された感じがします。
場面によって、使い分けるのがよいかと思います。