指定したビデオのコメント作成者のアバターを取得する小さな関数があります。 YouTube API v3のcommentThreadsメソッドから返されたJSONデータをループします。このJSONデータ 'item'をこのforeachループ(PHP)で一度だけ表示する方法
唯一の問題は、著者が複数回コメントしたことがあることです。そのため、私の機能は複数回の作者のアバターを表示しています。私はそれを一度だけ表示し、次のアバターに表示したいと思います。
現在、私の関数は次のようになります。
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ループをチェックする巧妙な方法がありますか?
質問は重複していますか?アバターが表示されているかどうかを確認しますか? –
@CasparWylieアバターがまだ表示されているかどうかを判断するために何が行われますか。私は各アバターを1回だけ表示したいだけです。私はそれが表示されているかどうかを確認するのではなく、重複の事実を確認する方がいいでしょう。ありがとう! – anthonyCam
それは表示されませんか?バックエンド(php)からデータ/アバターを出力しているので、配列内のすべてがページのロード時に出力されると仮定できますか? –