他の文字列を追加したい文字列があります。まあ言ってみれば:
$my_string = 'Hello';
$my_string .= ' there';
これは「こんにちは」を返します。
私はこれを次のように条件付きにしたい:
$my_string = 'Hello';
$append = 'do';
if ( $append == 'do' ) {
$my_string .= ' there';
}
さて、これを行うために三項演算を使用したいのですが、私が遭遇したすべての例は、if/elseが次のようになる場合のものです。
$my_string .= ( $append == 'do' ) ? ' there' : '';
それで、IFだけでそれを行うことは可能ですか?
ありがとう。
いいえ...三項とは、条件が必要な3つの部分、真の部分、および偽の部分を意味します
いいえ。ただし、逆の可能性もあります。 PHPドキュメントからの引用です:
PHP 5.3なので、三項演算子の中央部分を省略できます。式expr1?:expr3はexpr1がTRUEと評価された場合はexpr1を返し、それ以外の場合はexpr3を返します。
mellamokbとAndzを組み合わせると、次のことができます。
( $append != 'do' ) ?: $my_string .= ' there';
条件をチェックしてから文字列に追加する別の方法は次のとおりです。
($append == 'do') and ($my_string .= ' there');
しかし、それは実際にはif
変位にすぎません。しかし、「他のない三項」に近づいています。
あなたはこれを行うことができます:
( $append == 'do' ) ? $my_string .= ' there' : $noop ;
三項が割り当ての内側ではなく外側になるようにステートメントを反転すると、ステートメント全体をTRUE部分に配置してから、ELSE部分で操作なしのコマンドを実行できます。
コードを短くすることを検討している場合は、同じことを1行で書くことができます。
if ($append == 'do') {$my_string .= ' there';}
[〜#〜]編集[〜#〜]
私はこれを発見したばかりで、役に立つと思いました。このようにifブロックを書くこともできます
if ($append == 'do') $my_string .= ' there';
やりたいことをする関数を作ることができます。毎回if
ステートメントを書き出す代わりに。
function doAppend($doIt, &$value, $appendValue)
{
if($doIt) $value .= $appendValue;
}
それを呼び出す:
doAppend($append == 'do', $my_string, ' there');
2番目のパラメーターは参照によるものであるため、呼び出し元のコードでも変更されることに注意してください。
簡単で非常に効果的な方法は、返すものがない場合にTRUE
FALSE
値を使用することです。引数があるだけでなく、次のように、必要な正確な値で返すことができます。
$my_string .= ( $append == 'do' ) ? ' there' : true;
Else/false部分なしで三元を使用することはできませんが、すべてを1行にすることが目的である場合は、この代替手段を試すことをお勧めします。
($append == 'do' && $my_string .= ' there');
最初のステートメントが真の場合、2番目のステートメントに進みます。それ以外の場合は、最初の評価の結果がfalseになった後で停止します。
遅延評価を参照してください(いわゆる 短絡評価 )
または、trueifの部分を空のままにして、反対のことを行い、falseだけを宣言することもできます。 Andzが正しく指しているように。