使っていないと忘れがちな三項演算子のPHPでの使い方です。
3つの式(三項)を?(ハテナ)と:(コロン)で表す三項演算子ですが、「こういう書き方がある」ということを覚えておくだけでもソースコードを読み解く手助けになると思います。
三項演算子とは
基本的な形式と特徴
( 条件 ) ? 式1 : 式2;
条件がtrueの場合は式1の値、falseの場合は式2の値を返します。
“値を返す” ということと “2択である” ということがポイントになります。
適切な箇所で使うことで分かりやすく簡潔なソースコードの実現に繋がりますが、使いどころを間違うと逆に分かりにくいコードになってしまうため注意が必要です。
適切な箇所とは?(個人的見解)
私の場合、主に “シンプルな2択の代入” の際に三項演算子を使います。
if文で置き換えると次のような場合です。
if ( 条件 ) { $str = 'red'; } else { $str = 'blue'; }
これを三項演算子で表すとこうなります。
$str = ( 条件 ) ? 'red' : 'blue';
三項演算子( 条件 ) ? 'red' : 'blue'
で値の選択と$str
への代入を同時に行っています。
使いどころのポイントとしては
- 分岐ではなく値の選択
- 1行程度の式による値
- 分かりやすい記述になるかどうか
このあたりが判断基準になるかと思います。
三項演算子に向かないもの
複雑な分岐や入れ子は三項演算子に向いていません。
if ( 条件a ) { if ( 条件b ) { 式b1; } else { if ( 条件c ) { 式c1; } else { 式c2; } } } else { 式a2; }
上記のif文を三項演算子にすると・・・
次のようになりますが、書いていても間違っているんじゃないかと不安になる分かりにくさになってしまいます。
( 条件a ) ? ( ( 条件b ) ? 式b1 : ( ( 条件c ) ? 式c1 : 式c2 ) ) : 式a2;
三項演算子の使用例
関数で取得する値の選択
以前の記事から使われている箇所を持ってきました。get_query_var( 'paged' )
は現在のページ番号(数値)を取得するWordPressの関数です。
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
ページ番号の有無を条件に、存在すればその数値を、無ければ 1 を$paged
に代入しています。