ktykwsk.com

配列やオブジェクトを解り易い形式で出力

デバッグ時、よく「この変数の値ってどうなっているんだろう?」と思う事はよくあると思います。

文字列や数値であれば、echoで出力して確認すればよいですが、オブジェクトや配列ではそうはいきません。

そこで、オブジェクトや配列の内容を人間が見て解り易い形式で出力しましょう。

PHPにはそういった目的の為の関数がちゃんと準備されています。

print_r() 関数

公式ドキュメント

print_r ( mixed $expression [, bool $return = FALSE ] ) : mixed

第一引数に与えた変数の内容を人間が見て解り易い形式で出力します。

第二引数は省略可能で、trueを与えると、出力内容を文字列で結果として返します。例えば、Laravelでログ出力する場合は、

のようにするとログに出力できます。

配列を出力してみる

解説は苦手です。これを読んでるあなたもダラダラと書かれた解説を読むのは嫌いでしょう?百聞は一見に如かず。実行して結果を見てみましょう。まず配列を出力してみましょう。

以下のコードを実行します。

実行結果。

echo $array は、配列という文字列しか出力しませんが、print_r($array) は、内容まで出力してくれます。

インスタンスを出力してみる

クラスを作成し、それを元に生成したインスタンスを出力してみましょう。

実行結果。

メソッドに関しては出力されませんが、インスタンス変数に関しては、スコープに関係なく出力してくれます。

17行目の echo $foo をコメントアウトすると、以下のエラーが発生します。

配列は Array と返してくれるんだし、インスタンスの場合は、内部で get_class() を実行して完全クラス名でも返してくれるといいのにと思わずにいられません。

おしまい

デバッグや調査で活用してください。