次のブール式は PHP でどのように記述しますか。
$foo = "";
if($var==TRUE){
$foo = "bar";
}
また
if($var==TRUE){
$foo = "bar";
}else{
$foo = "";
}
また
$foo = ($var==TRUE) ? "bar": "";
次のブール式は PHP でどのように記述しますか。
$foo = "";
if($var==TRUE){
$foo = "bar";
}
また
if($var==TRUE){
$foo = "bar";
}else{
$foo = "";
}
また
$foo = ($var==TRUE) ? "bar": "";
まずtrue
、定数ではなく、トークンなので、大文字にしないでください(一部の標準ではそうなっていることは知っていますが、意味がわかりにくいと思います)...
$var == true
次に、内で冗長な比較を行う必要はありませんif
。これはif ($var) {
(二重==
比較の場合。同一の比較===
は明示的である必要があります)とまったく同じです。
第三に、私は事前初期化を好みます。それで:
$foo = '';
if ($var) {
$foo = 'one status';
} else {
$foo = 'another status';
}
elseブランチが必要ない場合は、削除するだけです。変数を初期化するように強制し、ブランチの1つで変数を初期化するのを忘れる場合を防ぐため、事前初期化をお勧めします。さらに、後で関数を読むために戻ったときに、タイプのヒントが表示されます...
そして、そのような単純な分岐の場合、三項構文を使用することは問題ありません。より複雑なロジックがある場合は、私は近づかないでしょう:
$foo = $var ? 'bar' : '';
それらのすべてが機能します。好みです。最初の例のように、最初に変数を初期化することを検討します。しかし、この単純なものについては、私の本では3番目のオプションで問題ありません。
また、$var が単なるブール値である場合、3 番目はそれほど冗長である必要はありません。
$foo = $var ? "bar" : "";
私は最初のもの (ブール値の冗長なテストを除く) を好みます。これは、言語間で一貫して機能するためです。特に、変数を設定する前に変数を宣言 (およびおそらく型付け) する必要がある言語で動作します。
ジャワ:
String foo = "";
if (var) {
foo = "Something";
}
JavaScript または JavaFX:
var foo = "";
if (var) {
foo = "Something";
}
3番目
の形式も使用できますが、条件 (または代入) が複雑な場合は、少し読みにくくなります。
私は最初のものが好きです:
$foo = "";
if($var==TRUE){
$foo = "bar";
}
明快で簡潔で読みやすいからです。
あまり重要ではありません。変数が常に初期化されることがわかるように、elseifがたくさんある場合は最初のものが好きです。しかし、それは本当に好みの問題です。
引用符のように、私はphpで単一のものを使用するのが好きです。正当な理由はありません:)
よくあることですが、正しい答えは「場合による」です。この場合、
if ($var==TRUE) $foo = "bar";
else $foo = "";
非常に明確です。しかし、あなたの文脈は何ですか?
一般に、3 番目のオプションである 3 番目の演算子は、非常に読みにくくなるため、細心の注意を払って使用する必要があります。
ただし、コードが何をするかよりも、コードに何を意味させたいかという観点から考えてください。$foo を「通常の」値に設定してからオーバーライドしますか? それとも、$var が何であるかに依存する何かに設定したいですか?
変更すると便利だと思うこと、それはあなたが直接尋ねるものではありませんが、似ていますが、これは、から
function func() {
...
if ($condition) {
do plenty
of things
}
else {
do plenty
of things
}
}
つまり、私は一般的に次のように変更します。
function func() {
...
if ($condition) {
do plenty
of things
return;
}
do plenty
of things
}
それは一般的に理にかなっています。
「私のコードについて何も知らない人がそれを読んだら、彼はそれを理解するでしょうか?それとも彼女でしょうか?」と自問してみてください。