[英]How to use heredoc in CakePHP?
嗨,我用谷歌搜索我沒有得到任何cakephp heredoc。 請解決我的問題
我想在CakePHP中使用Heredoc。
碼:
<?php
$qry = $this->Message->find("all");
$items = '';
$chatBoxes = array();
foreach ($qry as $chat) {
$items .=
<<<EOD
{
"s": "0",
"f": "{$chat['Message']['from']}",
"m": "{$chat['Message']['text']}"
},
EOD;
}
pr($items); exit;
?>
以上heredoc代碼無法正常工作,得到以下錯誤消息
Fatal Error
Error: syntax error, unexpected $end
File: E:\xampp\htdocs\2014\datingscanner\datingscanner\app\Controller\MessagesController.php
Line: 142
Notice: If you want to customize this error message, create app\View\Errors\fatal_error.ctp
編輯:
如果我從數據庫獲取單個值,它會正常工作。
$items .= $chat['Message']['from'];
這不是CakePHP的特定問題。 有效的Heredoc在結束標識符之前不能有其他字符(您必須有空格),因此它應類似於:
<<<EOD
{
"s": "0",
"f": "{$chat['Message']['from']}",
"m": "{$chat['Message']['text']}"
},
EOD;
^ no whitespace or anything else before the close identifier
從手冊 :
警告請務必注意,帶有結束標識符的行除分號(;)外,不得包含其他任何字符。
旁注:您似乎正在手動構建JSON字符串。 PHP具有內置功能來處理JSON,因此您可以使用數組或對象並將其轉換為JSON。
$items = array();
foreach ($qry as $chat) {
$items[] = array(
's' => '0',
'f' => $chat['Message']['from'],
'm' => $chat['Message']['text']
);
}
echo json_encode($items);
上面創建的代碼與您當前代碼創建的JSON相同。 這樣會更好,因為json_encode()
始終會生成有效的JSON,並且會轉義特殊字符,否則這些特殊字符會破壞JSON格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.