コンソールで変数の中身を確認する関数はいくつか存在する。
結論からいうとvar_export
が一番使い勝手がいい。
##目次
##まとめ (var_dump, var_export, print_rの違い)
変数の中身を確認サクッと確認したいなら、var_export
が便利。出力をそのままPHPコードとして使い回すことができる。
値の型も確認したい場合はvar_dump
を使う。引数に変数を2つ同時に指定することも可能。
項目 | var_export | var_dump | print_r |
---|---|---|---|
値の型表示 | 無し | 有り | 無し |
$str = "AAA"; | AAA | string(3) "AAA" | AAA |
PHPコードとして利用 | 可 | 不可 | 不可 |
$x = array('x' => 1); | array ('x' => 1) | array(1) {["x"] => int(1)} | Array([x] => 1) |
戻り値を返す | 有り | 無し | 有り |
3行目と5行目は左カラムの変数を引数として渡した場合の出力結果を表示。
一番役に立たたなそうなのがprint_r
。
##php対話モードの使い方 コード実行のためここでは対話モードを使う。
php -a
$ php -a
Interactive shell
php >
##print_r 変数の値を表示する。
・print_r ( $expression [, bool $return = false ] )
- $expressionには変数が入る。
- 第2引数は出力を戻り値とするか(任意)
- デフォルトはfalse。戻り値なし。
- 戻り値として出力する場合はtrueにする。
▼実際の使い方
・print_r( 変数 )
:変数の中身を確認したい
・print_r( 変数, ture)
:変数を代入する場合など
php > $obj = array("a" => 1, "b" => 2, "c" => 3);
php > print_r($obj);
Array
(
[a] => 1
[b] => 2
[c] => 3
)
###引数2つ($return = true)
引数ありの場合は、戻り値が返るため変数に代入することができる。
php > $obj2 = print_r($obj, true);
php > print_r($obj2);
Array
(
[a] => 1
[b] => 2
[c] => 3
)
上記処理の場合、いちいちprint_r(変数, true)
としなくても直接代入できる。
php > $obj3 = $obj;
php > print_r($obj3)
php > ;
Array
(
[a] => 1
[b] => 2
[c] => 3
)
戻り値としない場合は代入できない
$obj2 = print_r($obj);
Array
(
[a] => 1
[b] => 2
[c] => 3
)
php > print_r($obj2);
1
##var_export 変数のデータを構造化データとして返す。出力は有効なPHPコードになる。
var_export ( $expression [, bool $return = false ] )
php > $obj = array("a" => 1, "b" => 2, "c" => 3);
php > var_export($obj);
array (
'a' => 1,
'b' => 2,
'c' => 3,
)
出力結果がarray('a' => 1, 'b' => 2, 'c' => 3)
となっており、連想配列の定義そのものになっている。
###第2引数ありの場合
php > $obj = array("a" => 1, "b" => 2, "c" => 3);
php > $obj4 = var_export($obj, true);
php > echo $obj4
php > ;
array (
'a' => 1,
'b' => 2,
'c' => 3,
)
##var_dump `var_dump ( $expression , ...$expressions )` 型や値を構造化したデータを返す。 一度に2つの式(変数)を指定することができる。
php > $obj = array("a" => 1, "b" => 2, "c" => 3);
php > var_dump($obj);
array(3) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
var_exportとの大きな違いは2点
- 値の型を表示
- 式(変数)を2つ指定できる
###引数で変数を2つ指定した場合
php > $obj = array("a" => 1, "b" => 2, "c" => 3);
php > $x = array('x' => 1);
php > var_dump($obj, $x);
array(3) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
array(1) {
["x"]=>
int(1)
}