gpt4 book ai didi

php - 如何在此 foreach 循环中仅显示此 JSON 数据 'item' 一次(PHP)

转载 作者:行者123 更新时间:2023-12-03 05:49:50 25 4
gpt4 key购买 nike

我有一个小功能,可以抓取指定视频上评论作者的头像。它只是循环通过 YouTube API v3 commentThreads 方法返回的 JSON 数据。

唯一的问题是,有时作者不止一次发表评论,所以我的功能是多次显示作者头像。我只想显示一次,然后显示下一个头像。

这是我的意思的图片:
enter image description here

目前我的功能是这样的:

function videoCommentAvatars($video) {
// Parse YouTube video ID from the url
if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $video, $match)) {
$video_id = $match[1];
}

// Gather Video stats with YouTube API v3
$api_key = "API_KEY_HERE";
$JSON = file_get_contents('https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId='.$video_id.'&key='.$api_key);
$json_data = json_decode($JSON, true);

if (!empty($json_data)) {
foreach ($json_data['items'] as $data) {
// Create variables that hold info
$author_name = $data['snippet']['topLevelComment']['snippet']['authorDisplayName']; // Author Name
$author_avatar = $data['snippet']['topLevelComment']['snippet']['authorProfileImageUrl']; // Author Avatar
$author_channel = $data['snippet']['topLevelComment']['snippet']['authorChannelUrl']; // Author Channel URL

echo '<span class="comment-author-avatar">';
echo '<a target="_blank" href="'.$author_channel.'" title="'.$author_name.'"><img width="50" alt="'.$author_name.'" class="comment-author-thumb-single" src="'.$author_avatar.'"></a>';
echo '</span>';
}
}
}

一切正常,但无法检查头像是否已显示。我想过使用数组吗?将每个头像 URL 添加到数组中,并检查数组以查看键是否存在。但这对于看似更简单的事情来说似乎有点过头了。有没有人有一种聪明的方法来检查 foreach 循环是否有重复项?

最佳答案

要检查数组中的重复项,您有几个选项。首先,要摆脱循环之前的任何内容,您可以使用 array_unqiue($array)这将返回一个不重复其值的数组。

或者,如果您确实需要对循环中的所有值进行初始访问,并在存在重复时执行某些操作,则可以使用另一个数组作为记录,以查看它们是否出现多次。

$record = array();
foreach ($json_data['items'] as $data) {
// Create variables that hold info
$author_name = $data['snippet']['topLevelComment']['snippet']['authorDisplayName']; // Author Name
if(!in_array($author_name, $record)){

$author_avatar = $data['snippet']['topLevelComment']['snippet']['authorProfileImageUrl']; // Author Avatar
$author_channel = $data['snippet']['topLevelComment']['snippet']['authorChannelUrl']; // Author Channel URL

echo '<span class="comment-author-avatar">';
echo '<a target="_blank" href="'.$author_channel.'" title="'.$author_name.'"><img width="50" alt="'.$author_name.'" class="comment-author-thumb-single" src="'.$author_avatar.'"></a>';
echo '</span>';
$record[] = $author_name;
}
}

关于php - 如何在此 foreach 循环中仅显示此 JSON 数据 'item' 一次(PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39336632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com