elseif 部分を含む PHP 三項演算子はどのように記述すればよいですか?
if
PHP 三項演算子のandelse
部分を使用した基本的な例を次に示します。
echo (true) ? "yes" : "no"; //prints yes
echo (false) ? "yes" : "no"; //prints no
このような「elseif」部分を三項演算子に組み込むにはどうすればよいでしょうか?
<?php
if($result->vocation == 1){
echo "Sorcerer";
}else if($result->vocation == 2){
echo 'Druid';
}else if($result->vocation == 3){
echo 'Paladin';
}else if($result->vocation == 4){
echo 'Knight';
}else if($result->vocation == 5){
echo 'Master Sorcerer';
}else if($result->vocation == 6){
echo 'Elder Druid';
}else if($result->vocation == 7){
echo 'Royal Paladin';
}else{
echo 'Elite Knight';
}
?>
ベストアンサー1
Ternary は、あなたが望むものに対しては良い解決策ではありません。コード内では読みにくく、もっと良い解決策が存在します。
次のように、配列検索の「マップ」または「辞書」を使用しないのはなぜでしょうか。
$vocations = array(
1 => "Sorcerer",
2 => "Druid",
3 => "Paladin",
...
);
echo $vocations[$result->vocation];
このアプリケーションの三項演算子は次のようになります。
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));
なぜこれが悪いのでしょうか? なぜなら、1 行が長いため、ここで何か問題が発生した場合に有効なデバッグ情報が得られず、長さが読みにくく、さらに複数の 3 項演算子のネストが奇妙に感じられるからです。
標準的な三元法シンプルで読みやすく、次のようになります。
$value = ($condition) ? 'Truthy Value' : 'Falsey Value';
または
echo ($some_condition) ? 'The condition is true!' : 'The condition is false.';
三項演算子は、単純な文を書くための便利で短い方法ですif else
。上記の三項演算子のサンプルは、次のものと同じです。
if ($some_condition) {
echo 'The condition is true!';
} else {
echo 'The condition is false!';
}
ただし、複雑なロジックの三項演算子はすぐに読みにくくなり、簡潔さの価値がなくなります。
echo($result->group_id == 1 ? "Player" : ($result->group_id == 2 ? "Gamemaster" : ($result->group_id == 3 ? "God" : "unknown")));
複数の行に分散するように注意深くフォーマットしても、あまり明確ではありません。
echo($result->group_id == 1
? "Player"
: ($result->group_id == 2
? "Gamemaster"
: ($result->group_id == 3
? "God"
: "unknown")));