0

我们正在使用 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,期待 T_STRING 或 T_VARIABLE 或 T_NUM_STRING 在 .../dashboard.php 第 53 行

第 53 行是以下代码:

  $htmlBody .= "<h3>Videos in list $uploadsListId by $channel['snippet']['title']</h3><ul>";

$channel 的定义我们已经设置好了。

有什么错误?谢谢你的帮助。

4

1 回答 1

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'] );
于 2013-10-18T20:31:53.480 回答