這個問題已經老化一點,但提供了一個更完整的答案與幾個可能的解決方案。條件不允許在heredoc「內部」,但是你可以在heredocs中使用條件。
這些例子應該給你一個heredoc使用的想法。請注意,heredoc的第一行從3開始小於第一行的結尾符號和一些沒有空格的任意文本。按回車。 heredoc必須同樣關閉。正如您可能知道的那樣,用於打開heredoc的文本必須用於關閉它,通常不需要使用分號。確保沒有尾隨空格或字符跟隨分號或上一個文本字符,然後按下Enter鍵。
function doSomething($username = '', $status_id = '') {
if ('' != $username && '' != $status_id) {
$reply = <<<EOT
<a class ="reply" href="[email protected]{$username}&status_id={$status_id}&reply_name={$username}"> reply </a>
EOT;
} else {
$reply = <<<EOT
<h2>The username was not set!</h2>
EOT;
}
return $reply;
}
echo doSomething('Bob Tester', 12);
echo doSomething('Bob Tester');
echo doSomething('', 12);
根據您的具體情況你會發現它有助於使用類做你比較,你想在你的定界符使用。這裏是你如何做到這一點的例子。
class Test {
function Compare($a = '', $b = '') {
if ($a == $b)
return $a;
else
return 'Guest';
}
};
function doSomething($username = '') {
$Test = new Test;
$unme = 'Bob Tester';
$reply = <<<EOT
<h2>Example usage:</h2>
Welcome {$Test->Compare($username, '')}<br />
<br />
Or<br />
<br />
Welcome {$Test->Compare($username, $unme)}
EOT;
return $reply;
}
echo doSomething('Bob Tester');
+1 - 讀到這裏http://www.php.net/manual/en/language.types.string.php – Phil 2010-10-25 06:04:21
+1 *「我希望你在你的真實代碼中使用heredoc做得更多「* – jensgram 2010-10-25 06:07:04
歡呼它的作品,沒有即時返回一個段落,這個例子只是爲了說明,我沒有想傷害你的眼睛:))歡呼聲! – getaway 2010-10-25 06:13:29