条件分岐としてif文とswitch文がありますが、文字の出力を条件分岐により振り分ける方法はさまざま。

例えば、「情報を公開に設定しました」、「情報を非公開に設定しました」という文字を表示する機能を構築するとします。0か1をフラグの値とした場合、条件に応じて文字の出力を分けるというプログラムを以下のようにしたとします。

if($flag > 0) {
  echo "情報を公開に設定しました";
} else {
  echo "情報を非公開に設定しました";
}

これでも十分だけど、一部の部分だけ変更すれば他の文字は利用できるわけであり、変数などを利用して変化させたりするプログラムでも良いかと思います。そうなると以下のような書き方に変更しても良いかも。

if($flag > 0) {
  $txt = "公開";
} else {
  $txt = "非公開";
}
echo "情報を$txtに設定しました";

しかし、これだとechoが条件分岐の外になり、組み合わせるとしてはあまりスマートとは言えないかも。

そんな中、if分の記述方法では省略化できる書き方によりechoの中で利用できるとのこと。

(条件) ? true : false;

ifと言う言葉を省き、後ろにハテナをつけてコロンで分けるこの書き方。それを前後にさらに括弧をつけてechoで吐き出す文字列の間に組み込められるとは面白いですね。PHPはまだまだ知らない部分が多すぎだなと感じました。

echo "情報を". (($flag > 0) ? "公開" : "非公開") . "に設定しました";