3

私は省略形の if/else コードを探していましたが、$var ? $a : $bそれとは異なり、「else」のような戻り値は必要ありません。私が欲しいのは基本的にこれですが、もっと短いです:

$myVariable = "abc";
echo $myVariable ? $myVariable : "hello";
echo $myVariable ? "hello" : $myVariable;

私はLuaでそのようなことをするのに慣れています。それは次のようになります:

local myVariable = "abc"

-- In case myVariable is false, print "hello". Otherwise it prints "abc"
print ( myVariable or "hello" )

 -- In case myVariable does have something (So, true) print "goodday."
print ( myVariable and "goodday" )

だから私は疑問に思いました.PHPにはそのようなことをする機能がありますか? ありがとう。

4

6 に答える 6

4
$myVariable ? $myVariable : ""; 

次と同等です。

$myVariable ?: "";

PS: ここで PHP が型ジャグリングを行うことに注意してください。これは基本的に次と同じです。

if ($myVariable == TRUE) ...

$myVariableのような文字列である場合0は、false と評価されます。ただし00、true と評価されます。これは見た目ほど役に立たないことがわかりました。多くの場合$myVariable、最初に が設定されているかどうかを確認するか、型比較を行って変数がブール値であることを確認する必要があります...

于 2013-02-18T11:58:11.177 に答える
2

ternar 演算子の else を使用する必要はありません。常に次のようなことができます。

$myVariable = "abc";
echo $myVariable ? $myVariable : "";

$myVariable でない場合は何も出力しません

于 2013-02-18T11:56:19.697 に答える
2
echo (!empty($myVariable)) ? $myVariable : "hello";

また

echo (isset($myVariable)) ? $myVariable : "hello";

PHP は弱い型付けの言語であるため、or$myVariableを含むとfalseとして扱われる場合があります。また、変数が存在するかどうかを確認するか、少なくとも文字列であることを確認する必要があります。0""

于 2013-02-18T11:58:30.943 に答える
2

PHP 5.3以降、次のことができます:

echo $myVariable ?: "hello";

魔女は次と等しい:

echo $myVariable ? $myVariable : "hello";

2番目のオプションは不可能だと思います。

于 2013-02-18T11:58:34.813 に答える
2
$myVariable = "abc";
echo $myVariable ? : "hello";

PHP では、上記より短くなることはありません。$myVariable に値があることを確認して出力し、そうでない場合は "hello" を出力する必要があります。

于 2013-02-18T11:58:53.373 に答える
0

すべて同じことをします。PHP 7ではさらに短い

$var = $var ?? $var;
于 2016-05-30T08:13:41.493 に答える