我们正在用YouTube API(PHP)编写一个Web应用程序。我们已经编写了一个网站,您可以在其中连接您的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、期望在 .../dashboard.php第 53 行中出现T_STRING或T_VARIABLE或T_NUM_STRING
第 53 行是以下代码:
$htmlBody .= "<h3>Videos in list $uploadsListId by $channel['snippet']['title']</h3><ul>";
我们已经设定$channel的定义。
有什么错误?感谢您的帮助。
您正在尝试在双引号字符串中使用带有引号键的数组值。
执行此操作的正确方法是将变量括在大括号中{ }
:
$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'] );