?:演算子
PHP5.3では、?:演算子が導入された。この演算子は、3項演算子(A?B:C)のBの部分を省略した形で、Aが真の場合はAを、Aが偽の場合はCを返す。
偽となる値は以下の通り
- boolean の FALSE
- integer の 0 (ゼロ)
- float の 0.0 (ゼロ)
- 空の文字列、 および文字列の “0”
- 要素の数がゼロである 配列
- メンバ変数の数がゼロである オブジェクト (PHP 4のみ)
- 特別な値 NULL (値がセットされていない変数を含む)
- 空のタグから作成された SimpleXML オブジェクト
値が入力されていない場合に、デフォルト値をセットする場合に便利な関数だ。
使用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $name = "php6"; echo $name ?: "noname"; #実行結果 #php6 $name = ""; echo $name ?: "noname"; #実行結果 #noname unset($name); echo $name ?: "noname"; #実行結果 #noname |
このように、値が設定されていれば設定されている値を、値が設定されていない場合は?:演算子の右側に書かれた値を返す。上記と同じプログラムを、?:演算子ではなく、三項演算子を使うと以下のようになる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $name = "php6"; echo $name ? $name : "noname"; #実行結果 #php6 $name = ""; echo $name ? $name : "noname"; #実行結果 #noname unset($name); echo $name ? $name : "noname"; #実行結果 #noname |
三項演算子を使っても全く同じ処理を実装できるが、?:演算子を使うことで少しだけ式が単純になる。このように、無くても全く同じ処理を実装できるが、記述を分かりやすくする(簡潔にする)目的で導入された構文をシンタックスシュガーと呼ぶ。
[…] ?:演算子のページを追加した。PHP5.3から導入された演算子だ。敢えてこの演算子を使う必要はないが、運用環境にPHP5.3以降を使うことが決定しているシステムであれば、こんな演算子をつかってプログラミングするのも良いだろう。 […]