Перемешать идентификаторы YouTube

я новичок в 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>

Моя цель — обновлять страницу, чтобы получать новое видео каждый раз, когда я его посещаю, и сбрасывать себя после его завершения (или просто продолжать выбирать уникальные значения)

Заранее спасибо большое ..

1

Решение

Вы можете сохранить все видео-каналы в массиве, а затем использовать 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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]