2017-04-03 63 views
-1

在我的網站上,三元操作符全部用完,我正在考慮嘗試將它們更新爲合併。這只是一個例子,我希望得到有關進行轉換的提示/建議。與coalesce的事情是,它發送它找到的第一個值/字符串,所以我不知道這是否可能與coalesce?在PHP 7中,我如何將這個基本的三元函數轉換爲我的網站來合併?

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

是否有可能把它變成凝聚或者我應該堅持三元運算符?

+0

是否有什麼特別的原因,你不只是做'if(!empty($ member_logged_in))echo'profile link';'? –

+0

其實是的,因爲在每一個(驗證或不驗證)有一個特定的回聲聲明需要。我原本有大量的(r)if語句,然後通過SO學習了三元操作符,並想知道現在是否應該轉換爲合併操作符? – BluTiger13

+0

@ BluTiger13只是一個旁註,您可以刪除所有括號。他們是多餘的。 – Daan

回答

0

只要你打算使用整數或布爾值來控制模板內容,那麼你會被卡住使用邏輯語句。

唯一的兩種選擇是使用三元默認運算符或編寫助手函數。

// 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

??返回第一個操作數,如果它存在並且不爲空。如果$member_logged_in等於1,您希望輸出一個字符串。

在這種情況下,您不應該使用??運算符。

+0

好的,謝謝。我不確定是否有辦法調整或不調整「最新最好」。但是目前三元運營商目前正在按預期工作。 – BluTiger13

相關問題