3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHP 開発で必須の標準出力チートシート

Last updated at Posted at 2021-12-11

この記事は 株式会社サイバー・バズ 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)

PHP: print_r - Manual より引用

  • $value:出力したい値
  • $return:(省略可。初期値 false) true の時は string を返すようになります。

例えば

$str = "test";
print_r($str);

の出力は

test

となります。

var_export

var_export(mixed $value, bool $return = false)

PHP: var_export - Manual より引用

  • $value:出力したい値
  • $return:(省略可。初期値 false) true の時は値そのものを返すようになります。

例えば

$str = "test";
var_export($str);

の出力は

'test'

となります。

var_dump

var_dump(mixed $value, mixed ...$values)

PHP: var_dump - Manual より引用

  • $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 する前に不要な出力は削除するようにしましょう。

参考記事

使い分け方については、下記記事がオススメです。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?