PHP7で配列の構造と値を表示する方法|print_r()とvar_dump()の違いを解説
PHPにおける配列(Array)とは、複数の要素を1つの変数にまとめて格納できるデータ構造です。同じ型の値だけでなく、異なる型の要素や、配列の中にさらに配列を格納した「多次元配列」も柔軟に扱えます。
配列の構造や値を確認したい場合、PHPではvar_dump() と print_r() という2つの関数が利用できます。どちらも配列の中身を人間が読みやすい形式で出力できるため、開発時のデバッグで広く使われています。
print_r() と var_dump() の違い
print_r(): 変数の情報を人間が読みやすい形式で表示する関数です。配列の場合はキーと要素が対応づけられた形で出力されます。また、オブジェクトの protected および private プロパティも表示しますが、静的(static)なクラスメンバーは表示されません。
print_r() の使用例
<?php
$x = array ('x' => 'Dept', 'y' => 'Employee', 'z' => array ('a', 'b', 'c'));
print_r ($x);
?>
出力結果
上記の print_r() プログラムを実行すると、次のように出力されます。
Array
(
[x] => Dept
[y] => Employee
[z] => Array
(
[0] => a
[1] => b
[2] => c
)
)
var_dump(): 1つ以上の変数や式について、型と値を含む構造情報を表示する関数です。配列やオブジェクトは再帰的に探索され、インデントを付けて構造がわかりやすく出力されます。print_r() と異なり、各値のデータ型(int、string など)や文字列の長さまで確認できるのが大きな特徴です。
var_dump() の使用例
<?php
$x = array(1, 2, 3, array("x", "y", "z", "a"));
var_dump($x);
?>
出力結果
上記の var_dump() プログラムを実行すると、次のように出力されます。
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
array(4) {
[0]=>
string(1) "x"
[1]=>
string(1) "y"
[2]=>
string(1) "z"
[3]=>
string(1) "a"
}
}
print_r() と var_dump() を併用したプログラム
同じ配列に対して両方の関数を使用すると、出力形式の違いがひと目で比較できます。
使用例
<?php
$students = array("Rohan", "Mohan", "Thomas"); // 学生名の一覧を出力
print_r($students);
//echo "<hr>";
var_dump($students);
?>
出力結果
上記プログラムを実行すると、次のように出力されます。
Array
(
[0] => Rohan
[1] => Mohan
[2] => Thomas
)
array(3) {
[0]=>
string(5) "Rohan"
[1]=>
string(5) "Mohan"
[2]=>
string(6) "Thomas"
}
まとめ
配列の中身を手軽に確認したい場合は print_r()、値の型や文字列の長さまで正確に把握してデバッグを行いたい場合は var_dump() が適しています。用途に応じて両者を上手に使い分けることで、PHPでの開発効率を高めることができます。
-
JavaScriptのArray.values()メソッドの使い方をわかりやすく解説
Array.values()メソッドとはJavaScriptのArray.prototype.values()メソッドは、配列の各インデックスに格納された値を順番に取り出せる、新しいArray Iterator(配列イテレータ)オブジェクトを返します。引数は不要で、呼び出すだけでイテレータを取得できます。返されたイテレータに対してnext()メソッドを呼び出すと、{value: 値, done: 真偽値}という形式のオブジェクトが1つずつ返され、配列の要素を先頭から順に処理することができます。構文arr.values()パラメータと戻り値パラメータ:なし戻り値:配列の各インデックスの値を含む、
-
PHPのarray()関数とは?配列の作成方法をわかりやすく解説
PHPのarray()関数は、配列を作成するための関数です。PHPにおける配列には、主に以下の3種類が存在します。インデックス配列 − 数値インデックス(0から始まる番号)で要素を管理する配列連想配列 − 文字列などの名前付きキーで要素を管理する配列多次元配列 − 配列の中に1つ以上の配列を含む、入れ子構造の配列構文// 数値インデックスを持つ配列(インデックス配列) array(value1, value2, ...); // 名前付きキーを持つ配列(連想配列) array(key1 => value1, key2 => value2, ...)パラメータvalue − 配列に