我们正在使用YouTube API(使用PHP)编写网络应用程序。 我们已经设定了一个可以连接您的YouTube频道的网站。
在下一个网站上,我们要显示已连接频道的名称和上传内容。 为此,我们使用了以下代码:
$htmlBody .= "<h3>Videos in list $uploadsListId by $channel['snippet']['title']</h3><ul>";
foreach ($playlistItemsResponse['items'] as $playlistItem) {
$htmlBody .= sprintf('<li>%s (%s)</li>', $playlistItem['snippet']['title'],
$playlistItem['snippet']['resourceId']['videoId']);
}
$htmlBody .= '</ul>';
上传功能正常,但名称功能不起作用。 如果我们使用浏览器访问该站点,则会收到以下错误消息:
解析错误:语法错误,意外T_ENCAPSED_AND_WHITESPACE,在第53行的... / dashboard.php中期待T_STRING或T_VARIABLE或T_NUM_STRING
第53行是这段代码:
$htmlBody .= "<h3>Videos in list $uploadsListId by $channel['snippet']['title']</h3><ul>";
我们已经设定的$ channel的定义。
错误是什么? 谢谢你的帮助。
答案 0 :(得分:0)
您正在尝试在双引号字符串中使用带引号键的数组值。
执行此操作的正确方法是将变量包装在花括号{ }
中:
$htmlBody .= "<h3>Videos in list {$uploadsListId} by
{$channel['snippet']['title']}</h3><ul>";
或者连接它们:
$htmlBody .= "<h3>Videos in list " . $uploadsListId . " by
" . $channel['snippet']['title'] . "</h3><ul>";
或者,使用sprintf()
(在我看来看起来更整洁):
$htmlBody .= sprintf('<h3>Videos in list %d by %s',
$uploadsListId, $channel['snippet']['title'] );