2

確かにこれには簡単な答えがありますが、あいまいな用語が使用されているため、検索するのは困難です。

私は短縮形の if ステートメントを使用しており、true が返されたときに複数のアクションを実行したいのですが、構文はどのようになっていますか?

たとえば、論理的に考えて、次のようなことを試しました。

<?php

$var = "whatever";

(isset($var) ? $var2=$var; $var3=$var : $error="fubar");

?>

明らかに、これは予期しないで停止します。しかし、うまくいけば、私が達成しようとしていることのアイデアを得ることができます.

これが重複した質問である場合は申し訳ありませんが、検索したことを誓います。:)

ありがとう!

編集

この状況で速記が適切かどうかを検討する必要があることは理解しています。しかし、それでも、それができるかどうかが問題です。

4

3 に答える 3

1

この特定のインスタンスでは、次のことができます。

この特定のインスタンスでは、これを使用できます。

$output = (isset($var)) ? $var2 = $var3 = $var : false;

この特定のテスト インスタンスのわずかに優れたオプション:

$error = (isset($var)) ? !(bool)($var2 = $var3 = $var) : true;

これはIF is not set に設定され、$errorif is set に設定されるため、これをブロックでフォローアップできます。true$varfalse$varif($error)

ただし、三項はおそらくこれにアプローチする最良の方法ではありません...

より複雑なインスタンスの場合は、クロージャーを使用するか、さらに悪いことに、事前に宣言された関数を使用する必要があります。

$output = (isset($var)) ? setVars($var) : false;

function setVars($var) {
    $var2 = $var3 = $var;
}

ifこの時点では、おそらくorswitchステートメントを使用したほうがよいでしょう。

于 2013-06-28T16:49:07.787 に答える
0

私の知る限り、それは不可能であり、可能であってはなりません。同じように機能せず、そのために設計されていないため、 ではありません(?:)if

三項演算子は、「迅速な」if としてではなく、条件に応じて値を返す方法として存在します。

戻り値を必要とせずに使用している場合は、おそらく間違って使用しています。

この特定のケースでは、if-else ステートメントを使用する必要があります。また、コードを読みやすくするのにも役立ちます。

于 2013-06-28T16:34:28.760 に答える