я новичок в php, и мне было интересно, как я могу получить перемешанные идентификаторы YouTube ..
Вот что я имею в виду ..
$playlist_id = "PLB9DAD6B9EDAEE7BC";
$cont = json_decode(file_get_contents('http://gdata.youtube.com/feeds/api/playlists/'.$playlist_id.'/?v=2&alt=json&feature=plcp'));
$feed = $cont->feed->entry;
if(count($feed)) {
foreach($feed as $item) {
$title = $item->title->{'$t'};
$desc = $item->{'media$group'}->{'media$description'}->{'$t'};
$id = $item->{'media$group'}->{'yt$videoid'}->{'$t'};
}
}
Это в основном выбирает идентификатор, название и описание из списка воспроизведения, как я могу перетасовать $id
дать мне уникальные неповторяющиеся значения, чтобы я мог позже использовать его здесь?
<iframe ... src="http://www.youtube.com/embed/<?= $id ?>" allowfullscreen></iframe>
Моя цель — обновлять страницу, чтобы получать новое видео каждый раз, когда я его посещаю, и сбрасывать себя после его завершения (или просто продолжать выбирать уникальные значения)
Заранее спасибо большое ..
Вы можете сохранить все видео-каналы в массиве, а затем использовать array_rand, чтобы получить случайную запись массива.
Увидеть http://php.net/manual/de/function.array-rand.php для справки функции.
Помните, что array_rand возвращает один ключ при использовании с настройками по умолчанию, но он предоставит массив ключей, если вы выберете более одной случайной записи.
РЕДАКТИРОВАТЬ: Добавлен файл cookie, чтобы видео было действительно случайным уникальным
Фрагмент кода:
$playlist_id = "PLB9DAD6B9EDAEE7BC";
$cont = json_decode(file_get_contents('http://gdata.youtube.com/feeds/api/playlists/'.$playlist_id.'/?v=2&alt=json&feature=plcp'));
$feed = $cont->feed->entry;
$youtubeVideos = array();
if(count($feed))
{
foreach($feed as $item)
{
// build video array
$video = array();
$video['title'] = $item->title->{'$t'};
$video['desc'] = $item->{'media$group'}->{'media$description'}->{'$t'};
$video['id'] = $item->{'media$group'}->{'yt$videoid'}->{'$t'};
// push it into collection
$youtubeVideos[$video['id']] = $video;
}
}
$seenVideos=array();
$lastSeenVideo='';
// only get diff array if the cookies are set (= not first page view)
if(isset($_COOKIE['seen_youtube_videos']) && isset($_COOKIE['last_youtube_video']))
{
$lastSeenVideo=$_COOKIE['last_youtube_video'];
$seenVideos=unserialize($_COOKIE['seen_youtube_videos']);
$diffArr=$youtubeVideos;
foreach($seenVideos as $vidId)
unset($diffArr[$vidId]);
if(count($diffArr)>0)
{
// set difference for searching only
$youtubeVideos=$diffArr;
}
else
{
// if we did show all videos, reset everything
setcookie('seen_youtube_videos', '');
setcookie('last_youtube_video', '');
$seenVideos = array();
}
}
$randomizedKey = array_rand($youtubeVideos);
$randomVideo = $youtubeVideos[$randomizedKey];
do
{
$randomizedKey = array_rand($youtubeVideos);
$randomVideo = $youtubeVideos[$randomizedKey];
}
while($randomVideo['id'] == $lastSeenVideo);$seenVideos[] = $randomVideo['id'];
setcookie('seen_youtube_videos', serialize($seenVideos));
setcookie('last_youtube_video', $randomVideo['id']);
// do stuff with $randomVideo
Других решений пока нет …