0

私はif声明を持っています、そして私はそれを2つの方法で書くことができます:

1.  echo $danceInfo->getSearchingGigDes() ? $danceInfo : 'n/a';

or

2.  if ($danceInfo){ echo $danceInfo->getSearching(); }else{ echo 'n/a'; }

最初のものは機能していないようで、理由がわかりません??!!

私も試しました:

1.  echo $danceInfo->getSearchingGigDes() ? isset($danceInfo) : 'n/a';

しかし、うまくいきません。

何か案は?

..つまり、2番目のオプションを使用できますが、なぜ機能しないのか興味があります。

ありがとう

4

3 に答える 3

2

多分あなたがしたい

 echo (($danceInfo) ? $danceInfo->getSearching() : 'n/a');
于 2012-03-09T06:10:25.337 に答える
1

まず、2 つの異なる条件はどのように機能するのでしょうか。コンストラクト

X1 ? Y1 : Z1;

式として記述された条件です。ここで、式は値に評価されるものであり、より大きな式の一部にすることができます。一方で、

if (X2 {
   Y2;
}
else {
   Z2;
}

ステートメントであり、何かを実行する (たとえば、状態に影響を与える) 完全な "コード行" であり、より大きな式に埋め込むことはできません。

どちらの場合も、X1 と X2 は条件です。つまり、どちらの分岐を取るかを決定するためにブール値に評価する必要がある部分式です。PHP は、他の主要言語と同様に、ある程度の暗黙的な型変換を許可しているため、X1 と X2 がブール値 TRUE または FALSE に評価されず、代わりに他の組み込み型 (文字列や数値など) に評価されます。の場合、それらの値は明確に定義されたルールを使用してブール値に変換されます。たとえば、数値のゼロは FALSE に変換され、ゼロ以外の値は TRUE に変換されます。文字列の場合、空の文字列 (または null) は FALSE としてカウントされ、それ以外は TRUE として見なされます。

上記のコードでは、2 つの条件文の条件部分式が完全に異なるため、同じ結果が得られるとは期待できません。最初の条件は、文字列を出力に echo した結果です。したがって、どの分岐を取るかを決定するブール値は、「echo」の戻り値から変換されます。echo (http://php.net/manual/en/function.echo.php) は戻り値の型が void なので、常に false と評価されるべきだと思います。2 番目の条件では、$displayInfo の値を使用します。これが非 null、非ゼロ、または空でない文字列である場合、これは TRUE と評価され、echo 式の出力が表示されます。それ以外の場合は、' n/a' が出力されます。

于 2012-03-09T08:18:49.147 に答える
1

最初のものは

echo $danceInfo ? $danceInfo->getSearchingGigDes() : 'n/a';
于 2012-03-09T06:11:31.163 に答える