2012-08-10 148 views
0

我已經通過PHP手冊瞭解三元運營商,我發現很難理解。Php三元運營商,如果

如何將此三元運算符轉換爲if陳述或編輯,以便它將執行下面的代碼。取而代之的echo荷蘭國際集團我想要的代碼,這取決於使用是否已登錄在運行的方法,

echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.'; 

回答

1

你的代碼是有效的:

if ($openid->validate()) { 
    $temp = $openid->identity . ' has '; 
} else { 
    $temp = 'has not '; 
} 

echo 'User ' . $temp . 'logged in.'; 

這聽起來像你想要做的是:

if ($openid->validate()) { 
    handleLoggedInFunction(); 
} else { 
    handleNotLoggedInFunction(); 
} 
+0

它不一定是(關於他真正想做的),它可能只是一個動態的方式來打印出用戶登錄或不登錄的標籤。 – Zar 2012-08-10 22:57:28

+0

我拿了「代替回聲出我想代碼運行一個方法,而不是回聲用戶有/尚未登錄」意味着他想在每種情況下執行一些其他方法,而不是實際打印任何東西。不過,我可能會誤解。 – 2012-08-10 22:59:50

+0

Thx。我認爲這是我正在尋找的。也thx to @Zar – 2012-08-10 23:01:07

0
$value = true; 
$value ? runFunction() : (echo "has not logged in"); 

推斷:

$openid->identity() ? loggedInFunction() : notLoggedInFunction(); 
+0

這不是OP要求的。 – 2012-08-10 22:58:06

+0

我沒有使用他的變量,就是這樣。 – wanovak 2012-08-10 22:59:48

+0

對不起,沒關係。我沒有閱讀這部分'或編輯,所以它會做以下'。我雖然只是在尋找一個「如果」的聲明。 -1刪除。 :) – 2012-08-10 23:01:03

1

直接的翻譯是:

echo 'User '; 

if($openid->validate()) { 
    echo $openid->identity . ' has '; 
} else { 
    echo 'has not ' 
} 
echo 'logged in.'; 

有,但是,更清潔的方式來寫代碼,做同樣的事情(看其他的答案)。