PHP Tech

1行でのif文 三項演算子を使った条件分岐 [PHP]

多くの言語で、疑問符 ? は if の置換として使うことが出来、if文の代わりに三項演算子によって評価することが出来ます。

三項演算子でif文を実施したい時に何を求めて調べているかといえば、判定結果の真偽値が右か左かどっちだったかという事なんですが、大体の記事で「ifでかくとこれと同じです」とか回りくどい内容が出てきます。

知りたいのはこれ、左が真、右が偽。ちなみにJavaScriptでも同じです。

(条件式) ? (真式) : (偽式);

// (条件式) ? (真式) : (偽式);
$magikarp_level = 19;
$evolution_flag = ($magikarp_level >= 20) ? "1" : "0";
var_dump($evolution_flag);
//"0"

「左が条件に一致する」時の結果、「右が一致しない」時の結果なので、この例だとコイキングはまだレベル19なので進化フラグが"0"のままでギャラドスになれないという事になります。

※ちなみに三項演算子の左側だけが必要な場合はこんな書き方も出来ます。

$conditions && $result=1;

$conditions == true の場合のみ $result=1になります。

 

たまに条件式を括弧で覆わない記述を見かけます。確かに括弧で覆わなくとも機能しますが、括弧はコードの可読性をより良くします。そのため、括弧を使う記述の方が推奨されます。

三項演算子は行が短くなりますが、反面読みにくくなります。これは人間の目はコードを縦に見ていくためです。そのため、複数行にまたがる構造の方が、長い水平な文よりも理解しやすいのです。

疑問符 ? の目的は、条件によって別の値を返すことです。異なるコードの分岐を実行するために if があります。

基本的にはif~elseを優先し、処理を切替えたいならif文を使い、変数の値を切替えたいなら三項演算子使うといった使い分けが良いです。

当たり前ですが、行数を短くするよりも、他人が理解するのにかかる時間を短くすべきということです。


  • この記事を書いた人

朝倉卍丸

-PHP, Tech

© 2021 Tech Economy