変数に格納された数値,文字列などの値や配列を画面に出力する方法です。
DBにアクセスして取得した値を画面の一部として出力する場合などにも使えますし、デバッグで一時的に変数の中身を確認したい場合などにも使えます。
これも基本中の基本ですのでしっかり覚えておきましょう。
echoで値を出力する
1 2 |
echo 123; echo "Suxuki"; |
1 |
echo("Sato"); |
1 2 |
$srt = "Tanaka"; echo $srt; |
変数に格納されている値を出力する場合はこのように書きます。
printで値を出力する
print も echo と同じような使い方をします。
1 2 3 |
print 123; print "Suxuki"; print("Sato"); |
括弧はあっても無くても同じですが、僕はなんとなくprintを使う場合は括弧をつけてます。
ほぼ使いませんが。
1 2 |
$srt = "Tanaka"; print($srt); |
変数の内容を出力する場合はこのように書きます。
var_dumpで配列やオブジェクトを出力する
1 2 3 4 5 |
$ary = array( 'name' => 'Yamada', 'age' => '34', 'birth' => '19840123' ); |
これを echo で出力しようとするとエラーになり中身を見ることが出来ません。
そういった配列やオブジェクトを出力するときには var_dump() を使うと中身をまるごと出力することが出来ます。
1 2 3 4 5 6 |
$ary = array( 'name' => 'Yamada', 'age' => '34', 'birth' => '19840123' ); var_dump($ary); |
これを実行すると次のようになります。
配列の中身をまるごと出力できました。
これは配列だけでなくオブジェクトの場合も有効です。
1 2 |
$datetime = new DateTime(); var_dump($datetime); |
DateTimeクラスは日時をコントロールするときに使うクラスです。
これを new を使いオブジェクトにしたものを var_dump() で出力してみます。
このようにオブジェクトの中身を出力することが出来ます。
print_rで配列やオブジェクトを出力する
print_r() も var_dump() とほぼ同じです。
1 2 3 4 5 6 |
$ary = array( 'name' => 'Yamada', 'age' => '34', 'birth' => '19840123' ); print_r($ary); |
このコードを実行すると以下のように出力されます。
若干出力のされ方が違いますが、中身が確認できるのは同じです。
では var_dump() と print_r() は何が違うのか?
他にもあるかもしれませんが、値が null の場合と真偽値の場合は、print_r() だと何も出力されません。
var_dump() だと null の場合は NULL と出力されます。真偽値の場合は bool(true) のように出力されます。
それと僕が一番使い分けるポイントはログに出力するときです。
この記事の最後「配列をログに出力する際にはprint_rが便利」で説明します。
配列を画面に出力して中身を確認する際のテクニック
画面に配列やオブジェクトを出力する際に var_dump() でも print_r() でも1行にずばーっと出力されてしまいます。
上で紹介した例では配列の中身が少ないのでなんとか読めましたが、もっと大きいのだと読みにくくてしょうがないです。
そんなときはHTMLタグの<pre> ~ </pre> を使うと綺麗に出力されます。
1 2 3 4 5 6 7 8 9 10 |
<pre> <?php $ary = array( 'name' => 'Yamada', 'age' => '34', 'birth' => '19840123' ); print_r($ary); ?> </pre> |
このようにPHPで出力する場所をpreタグで囲みます。
そうすると出力結果が次の画像のようになります。
かなり見やすくなりましたね!
これで配列でもオブジェクトでも中身がばっちり確認出来ます!
今回の例では print_r() を使って出力しましたが、var_dump() でも 同じです。
配列をログに出力する際にはprint_rが便利
print_r() には第二引数があります。
第二引数は文字列にした結果を返すかどうかを指定します。
初期値は false になるため画面出力します。
返さない場合は echo などのように画面に出力しますが、返す場合は配列やオブジェクトの中身を文字列にしたものを戻り値として返してくれます。
例えば、
1 |
log(print_r($var)); // log() はログ出力する関数とする |
のように書いた場合、ログには何も出力されず画面に$varの中身が表示されます。
1 |
log(print_r($var, true)); // log() はログ出力する関数とする |
のように書けば画面には画面には出さずログに出力します。
イメージわくでしょうか?
ちょっと難しいかもですが、print_r() の中身のイメージを作成しました。
1 2 3 4 5 6 7 8 |
function print_r($obj, $return = false) { $str = $obj // 配列やオブジェクトを文字列にする処理 if ($return) { return $str; } else { echo $str; } } |
上のように第2引数に true が指定されれば echo しないで関数の呼び出し元に作成した文字列を返すのだと思います。
僕の場合は画面に出力してデバッグする場合はNULLや真偽値も出力できる var_dump() を使い、ログに出力する場合は print_r() を使うようにしています。
まとめ
単一の値、もしくは単一の値が格納された変数の場合は echo や print を使って出力する。
配列やオブジェクトの中身を出力する場合には var_dump() や print_r() を使って出力する。
画面に出力では無く、ログに吐き出したい場合は print_r() の第二引数に true を指定して使う。
これでデバッグもさくさくですね!
コメントを残す