この記事は 株式会社サイバー・バズ Advent calendar 2021 11日目の記事です。
10日目の記事は 一年間で「大きく成長できた」と感じたターニング技術一覧! 、
12日目の記事は GoogleAppsScript(GAS)で効率化する時になんだかんだよく使うコードスニペット10選 です。
本題
PHP を使い始めて3ヶ月、未だに標準出力を雰囲気で使っているので、自戒も兼ねてまとめました。
- 前半:標準出力のについておさらい
- 後半:チートシート
という構成で進めます。
手っ取り早く**「チートシートだけ見たい!!!」**って方は PHP標準出力チートシート に飛んで下さい。
標準出力
print_r, var_export, var_dump の3つあります。
print_r
print_r(mixed $value, bool $return = false)
-
$value
:出力したい値 -
$return
:(省略可。初期値false
) true の時は string を返すようになります。
例えば
$str = "test";
print_r($str);
の出力は
test
となります。
var_export
var_export(mixed $value, bool $return = false)
-
$value
:出力したい値 -
$return
:(省略可。初期値false
) true の時は値そのものを返すようになります。
例えば
$str = "test";
var_export($str);
の出力は
'test'
となります。
var_dump
var_dump(mixed $value, mixed ...$values)
-
$value
:ダンプしたい値 -
$values
:追加でダンプしたい値
渡ってきた値について、構造化された情報を出力します。
また、複数の値の情報を出力することが出来ます。
注意点ですが、print_r や var_export と異なり $return
のパラメータが無いため値そのものを返すことはできません。
例えば
$str = "test";
var_dump($str);
の出力は
string(4) "test"
となります。
PHP標準出力チートシート
「各出力において」「各型の値がどう返ってくるか」を記載しています。
対象の型は、整数、浮動小数点数、文字列、論理、配列、オブジェクト、null, の7つです。
※ リソース、callable, Iterable, enum(PHP 8.1〜) は今回割愛します。
print_r($value) |
var_export($value) |
var_dump($value) |
|
---|---|---|---|
整数$value = 1
|
1 | 1 | int(1) |
浮動小数点数$value = 3.14
|
3.14 | 3.14 | float(3.14) |
文字列$value = "php"
|
php | 'php' | string(3) "php" |
論理$value = true
|
1 | true | bool(true) |
配列$value = array("hoge", "fuga", "piyo")
|
Array ( [0] => hoge [1] => fuga [2] => piyo ) |
array ( 0 => 'hoge', 1 => 'fuga', 2 => 'piyo', ) |
array(3) { [0]=> string(4) "hoge" [1]=> string(4) "fuga" [2]=>string(4) "piyo" } |
オブジェクト$value = (object)"object"
|
stdClass Object ( [scalar] => object ) |
(object) array( 'scalar' => 'object', ) |
object(stdClass)#1 (1) { ["scalar"]=> string(6) "object" } |
null$value = null
|
NULL | NULL |
一覧にしてみると、かなりの違いがありますね。
注目したいものとしては、
- 論理型において
print_r
は0または1で出力される - null のときに
print_r
は空が出力される
点があります。
他にも、配列とオブジェクトについては出力が大分異なるので、必要な情報に応じた使い分けが良さそうです。
まとめ
標準出力を使いこなすと、開発効率が著しく向上します。
とりあえず**エラーで詰まったら「値がどうなってるのか出力だ!」**って感じに、バンバン活用していきましょう。
そして commit する前に不要な出力は削除するようにしましょう。
参考記事
使い分け方については、下記記事がオススメです。