こんにちは、エンジニアのオータケです。
皆さんはPHPで配列を扱う時に中身がどうなっているか気になりませんか?
そしてその中身を表示させる時にどのような方法で表示していますか?
この記事では
・var_dump関数を使用して配列の中身を表示する方法
・print_r関数を使用して配列の中身を表示する方法
・var_export関数を使用して配列の中身を表示する方法
といった基本的な内容から
・var_dump、print_r、var_exportの違い
などについても解説します。
今回はそんな配列の中身を表示する方法について、わかりやすく解説します!
var_dump関数の使い方
var_dump関数は指定した変数や配列に関して、その型や値を含む構造化された情報を出力する関数です。
書き方:
void var_dump ( $変数または配列 )
引数:
引数には中身を出力する変数または配列を指定します。
返り値:
返り値はありません。
var_dump関数を使用して配列の中身を表示するサンプルです。
サンプルプログラム:
<?php $fruits = ['apple', 'melon', 'banana']; var_dump($fruits); ?>
実行結果:
array(3) { [0]=> string(5) "apple" [1]=> string(5) "melon" [2]=> string(6) "banana" }
実行結果を見ると、
配列のサイズarray(3)、
要素番号と文字列のサイズ[0]=> string(5)、
値”apple”
がそれぞれ要素ごとに出力されていることがわかりますね!
では次に連想配列を指定すると、どのように表示されるのか見てみましょう!
サンプルプログラム:
<?php $fruits = [ 'value1'=>'apple', 'value2'=>'orange', 'value3'=>'melon', 'value4'=>'banana', 'value5'=>'pineapple' ]; echo "<pre>"; var_dump($fruits); echo "</pre>"; ?>
実行結果:
array(5) { ["value1"]=> string(5) "apple" ["value2"]=> string(6) "orange" ["value3"]=> string(5) "melon" ["value4"]=> string(6) "banana" ["value5"]=> string(9) "pineapple" }
連想配列の場合は、設定したキーも出力されていることがわかりますね!
var_dumpによる出力をpreタグで囲うと、半角スペースや改行がそのまま表示されるので見やすくなります。
print_r関数の使い方
print_r関数を使うことでも配列の中身を分かりやすく表示できます。
書き方:
print_r ( $変数または配列 [, bool $return = false ] )
引数:
第一引数には結果を表示したい変数または配列を指定します。
第二引数にtrueを指定すると、結果を返します。
返り値:
引数が変数の場合は値が出力され、配列の場合はキーと要素を表す形式で値が表示されます。
第二引数にtrueを指定すると、結果を返します。
print_r関数を使用して配列の中身を表示するサンプルです。
サンプルプログラム:
<?php $fruits = ['apple', 'melon', 'banana']; print_r($fruits); ?>
実行結果:
Array ( [0] => apple [1] => melon [2] => banana )
var_dump関数による出力とは、少し形式が違いますよね?
print_r関数を使うとこのようにキーと値が分かりやすく表示されるようになります。
var_export関数の使い方
var_export関数もvar_dump関数やprint_r関数と同じく構造化された情報を返します。
書き方:
var_export( $変数または配列 [, bool $return = false ] )
引数:
第一引数にはエクスポートしたい変数または配列を指定します。
第二引数にtrueを指定すると、結果を返します。
返り値:
引数が変数の場合は値が出力され、配列の場合はキーと要素を表す形式で値が表示されます。
第二引数にtrueを指定すると、結果を返します。
var_export関数を使用して配列の中身を表示するサンプルです。
サンプルプログラム:
<?php $fruits = ['apple', 'melon', 'banana']; var_export($fruits); ?>
実行結果:
array ( 0 => 'apple', 1 => 'melon', 2 => 'banana', )
先程のvar_dump関数とprint_r関数とはまた少し違う結果になったかと思います。
var_dump、print_r、var_exportの違い
ここまで、var_dump関数、print_r関数、var_export関数のそれぞれの使い方と表示方法について解説をしました。
しかし、表示結果としてはどれも同じような形でなぜ3つも同じような関数があるのかと思った方も居ると思います。
実はこの関数は基本的な使い方はどれも一緒で出力結果もどれも同じような形になるのですが、応用的な使い方をすることで全く違った結果になるのです。
まず、print_r関数について見てみましょう。
この関数には実は第2引数に真偽値を渡すことで処理方法が変わってしまいます。
これだけではわからないかと思いますので次のコードを見てみましょう。
サンプルプログラム1:
$fruits= ['apple', 'melon', 'banana']; print_r($fruits, true);
実行結果:
何も表示されなくなったかと思いますがこれは不具合ではありません。
となると先程表示されていた配列の値が表示されなくなってしまい、この第2引数何の意味があるのでしょうか?
この第2引数でtrueを指定すると出力(表示)するのではなく結果を戻り値として文字列で返すという動きに変わるのです。
サンプルプログラム2:
$fruits= ['apple', 'melon', 'banana']; $result = print_r($fruits, true); echo $result;
実行結果:
Array ( [0] => apple [1] => melon [2] => banana )
このコードではprint_rの第2引数にtrueを与えて結果を変数$resultで受け取っています。
変数$resultは文字列なのでその文字列をecho関数を使ってそのまま表示させています。
var_dump関数にはこういったことが出来ないため、大きな違いとなります。
では、print_r関数とvar_export関数にはどのような違いがあるのでしょうか。
var_export関数も第2引数にprint_r関数同様、真偽値を設定することが可能で動作についても同じような動作をしますが、やはり出力される結果に違いがでます。
var_export関数で出力される結果は公式ドキュメントでは「変数表現を返します」とあります。
この「変数表現」とは「プログラムで記述する際と同じような表記で返すという意味合い」になります。
先程のvar_export関数を使った実行結果を見れば分かって頂けるのではないでしょうか?
この違いにより、それぞれの関数によって配列の中身をファイルに出力する方法が変わってきますので、次の章で解説してきます。
まとめ
今回は配列の中身を表示する方法として、
- var_dump関数の使い方
- print_r関数の使い方
- var_export関数の使い方
- それぞれの違い
について解説しました。
ここで紹介した関数はデバッグなどで使用する機会も多いので、使い方をしっかりと覚えましょう。
もし表示方法について忘れてしまったら、この記事を思い出してくださいね!