2014-11-25 2 views
1

Я новичок в PHP, и мне было интересно, как я мог извлекать перемешиваются идентификаторы YouTube .. Вот что я имею в виду ..Перемешать 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>

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

Спасибо заранее, lot ..

ответ

1

Вы можете сохранить все видео для подачи в массиве, а затем использовать array_rand для получения случайной записи массива.

См. http://php.net/manual/de/function.array-rand.php для ссылки на функциональность. Имейте в виду, что array_rand возвращает один ключ при использовании с настройками по умолчанию, но он будет поставлять массив ключей, если вы решите выбрать более одной случайной записи.

EDIT: Добавлено печенье так видео Случайного уникального

Фрагмент кода:

$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 
+0

Я попробовал его и он прекрасно работает, но файлы не умирают после закрытия браузера, лучше использует сеансы? –

+0

В общем случае использование сеанса - это полная нечетная конструкция и определение определения функции setcookie (см. Здесь: http://php.net/manual/en/function.setcookie.php). Cookie должен быть удален при закрытии браузера, как описано : «expire: время, в течение которого cookie истекает. Это временная метка Unix, так что это количество секунд с эпохи. [...]. Если установлено значение 0 или опущено, файл cookie истекает в конце сеанса (когда браузер закрывается). " Вы можете попробовать, если установка параметра expire в явном 0 помогает –

Смежные вопросы