2017-04-03 4 views
-1

私のウェブサイトでは、三元演算子がすべて使用されており、それらを更新して融合させることを検討しています。これはほんの一例であり、私は移行のヒント/示唆を得ることを望んでいました。合体したことは、見つかった最初の値/文字列を送ることであり、合体で可能かどうかはわかりません。PHP 7では、どのようにして私のウェブサイトのこの3元関数を合体させるのですか?

echo (
($member_logged_in == 1) 
? '<a href="profile.php">My Profile</a>' 
: '<a href="login.php">Login</a>' 
); 

これを合体にすることは可能ですか、3値演算子を使用する必要がありますか?

+0

'if(!empty($ member_logged_in))echo 'プロファイルリンク';'を実行している特別な理由はありますか? –

+0

実際には、それぞれの(検証するかどうかを検証する)ために、特定のecho文が必要です。私はもともと大きな(r)if文を持っていましたが、SOから3者演算子について学びましたが、演算子を合体させるべきかどうか疑問に思っていましたか? – BluTiger13

+0

@ BluTiger13ちょうどsidenote、あなたはすべてのかっこを削除することができます。彼らは余分です。 – Daan

答えて

0

整数やブール値を使ってテンプレートの内容を制御している限り、論理的なステートメントを使用していることになります。

代わりに、3つのデフォルト演算子を使用するか、ヘルパー関数を書くことしかできません。

// replace boolean with a string or null 
$member_logged_in = '<a href="profile.php">My Profile</a>'; 
//..... 
echo $member_logged_in ?: '<a href="login.php">Login</a>'; 

は、理想的には、テンプレート内の任意の条件があってはならない論理的な機能

function __($a,$b,$c) { return $a ? $b : $c; } 
//........ 
echo __($member_logged_in, '<a href="profile.php">My Profile</a>', '<a href="login.php">Login</a>'); 

を使用してください。 $menuという変数を挿入して、表示するリンクを保持していて、テンプレートがサインインされているかどうかを気にする必要はありません。

+0

うわー。私はそれを考慮しなかった。本当にありがとう。私は正直言って愛好家の開発者です。私は配列をすることができ、多くの楽しいものを返すことができます。私は本当にそれを感謝します! – BluTiger13

0

??は、第1オペランドが存在し、それがヌルでない場合、第1オペランドを返します。 $member_logged_in1の場合は文字列を出力します。

この場合、??演算子は使用しないでください。

+0

申し訳ありません。私は多分それを微調整したり、 "最新かつ最高のもの"を得る方法があるかどうかはわかりませんでした。現在のところ、三元演算子は現在意図したとおりに動作しています。 – BluTiger13

関連する問題