PHPの配列デバッグにはprint_r()
とvar_dump()
をよく使いますが、両者には厳密さにおいて違いがあります。
手軽なprint_r()
と厳密なvar_dump()
を比べてみます。
ただ、あくまでもデバッグ用の関数なので、正式に出力させるforeach()
も簡単に触れますよ。
目次
print_r関数で配列を表示
指定した変数に関する情報を分かりやすく出力してくれます。
添字配列を表示
1 2 3 |
$addr = array('神奈川県','横浜市','港南区'); print_r($addr); |
Array ( [0] => 神奈川県 [1] => 横浜市 [2] => 港南区 )
配列を表示してくれました。
ブラウザのソースを表示する機能で見ると、下記のように見やすく並んで表示してくれますよ。
Array
(
[0] => 神奈川県
[1] => 横浜市
[2] => 港南区
)
分かりやすく並んでますね。
連想配列を表示
1 2 3 |
$ages = array('nagasawa'=>26,'sayama'=>27,'sakuraba'=>28); print_r($ages); |
Array
(
[nagasawa] => 26
[sayama] => 27
[sakuraba] => 28
)
連想配列もご覧のように分かりやすく表示してくれます。
ただ、配列の値の型などは表示されないため、型なども見ながら動作確認したい場合は下記のvar_dump()
を使いましょう。
var_dump関数で配列を表示
変数に関する情報をダンプする関数です。よく分かりませんね。
var_dump関数で配列をダンプ
ダンプとはデバッグで中身を確認する作業という意味です。
print_r()
よりも、型などより詳細な情報を得ることができます。
1 2 3 |
$ages = array('nagasawa'=>26,'sayama'=>27,'sakuraba'=>28); var_dump($ages); |
array(3) {
[“nagasawa”]=>
int(26)
[“sayama”]=>
int(27)
[“sakuraba”]=>
int(28)
}
print_r()
と比べると、値の横にint
という文字が表示されました。
これが型ですね。
ちなみにint
は整数型のことです。
var_dump関数の構文
var_dump(表示させたい変数(, 表示させたい変数…));
上記のようにカンマ区切りで複数の変数(配列)を表示させることもできます。
var_dump関数で様々な型を表示
他の型も下記のように表示されます。
1 2 3 4 5 6 7 8 9 10 |
$profile = array( 'name'=>'佐山', 'age'=>27, 'job'=>true, 'student'=>false, 'wife'=>NULL, 'weight'=>72.89 ); var_dump($profile); |
ちなみに、配列の値が多い場合は上記のように区切って書くと分かりやすいですよ。
array(6) {
[“name”]=>
string(6) “佐山”
[“age”]=>
int(27)
[“job”]=>
bool(true)
[“student”]=>
bool(false)
[“wife”]=>
NULL
[“weight”]=>
float(72.89)
}
様々な型が出てきましたね。
以下のような型が出ました。
- string => 文字列型
- int => 整数型(数値)
- bool(true)=>ブーリアン型(true)…true, false
- bool(false)=>ブーリアン型(false)…true, false
- NULL=>何もない
- float=>浮動小数点数型
PHPは型をあまり意識せずともコーディングができちゃいますが、数値と文字列の比較で自動変換されたりと思わぬところでハマる原因にもなっています。
var_dump()
を使い、型を確認しながらコーディングすることで、バグも早めに潰せるでしょう。
参考:PHPの文字列型と数値型の比較は、自動変換により両者とも数値型に揃えられる
foreach関数で実践的に配列を表示する
今までは主にデバッグ用で使われる関数をご紹介しましたが、そのまま使うことは少ないでしょう。
実際にはforeach()
のような繰り返し処理により、配列を1つずつ出力する方法が一般的です。
1 2 3 4 5 |
$ages = array('長澤'=>26, '佐山'=>27, '櫻庭'=>28); foreach ($ages as $key => $val) { echo $key.'('.$val.'歳)<br>'; } |
長澤(26歳)
佐山(27歳)
櫻庭(28歳)
foreach()
の使い方はこちらでご紹介しています。
PHPのforeachで配列処理(HTML埋め込みでもスッキリな書き方も)
print_r()
やvar_dump()
は配列だけでなく、オブジェクトや文字列などさまざまな場面でデバックする際によく使う関数ですので、使いこなしたいですね。