2013-06-18 4 views
1

Я пытаюсь создать сценарий, который перенаправляется на случайное видео YouTube. Как я могу взять vidKey, поместить каждый $ vidkey в массив и затем рандомизировать этот массив, чтобы вы перенаправлялись на другое видео YouTube?ForEach Random Array

$sxml = simplexml_load_file("http://gdata.youtube.com/feeds/api/users/TechTubeCentral/uploads?max-results=25"); 
foreach ($sxml->entry as $entry) { 
    $vidKey = substr(strrchr($entry->id,'/'),1); 
} 

ответ

3

Поместите каждый ключ в массив, а затем shuffle его, когда вы сделали:

$sxml = simplexml_load_file("http://gdata.youtube.com/feeds/api/users/TechTubeCentral/uploads?max-results=25"); 
$vidKeys = array(); 
foreach ($sxml->entry as $entry) 
    $vidKeys[] = substr(strrchr($entry->id,'/'),1); 

shuffle($vidKeys); 

Тогда просто выбрать одну запись из него, как $vidKeys[0].

Вы также можете поместить результаты в базу данных и ORDER BY RAND(). При следующем запросе вы получаете видео-ключи из БД, выбираете и удаляете запись из списка (см. array_shift) и помещаете список обратно в БД. Вы делаете это до тех пор, пока не будет больше видео-ключей, затем снова запустите запрос Google и т. Д. Это сохранит ваш скрипт от запроса Google при загрузке каждой страницы и уменьшит вероятность перенаправления на одно и то же видео.

+0

Перетасовка может быть временными затратами на больших массивах, лучше просто использовать [ 'array_rand()' ] (http://php.net/manual/en/function.array-rand.php). – Sammitch

+0

Причина: Я не делаю базы данных, потому что я хочу, чтобы она использовала API, поэтому я могу просто создать код и просто забыть об этом – user2398026

0
$i=0; $random_video = mt_rand(1, 25); 

    $sxml = simplexml_load_file("http://gdata.youtube.com/feeds/api/users/TechTubeCentral/uploads?max-results=25"); 
foreach ($sxml->entry as $entry) { 

    if($random_video==$i++){ 
    $vidKey = substr(strrchr($entry->id,'/'),1); break; 
    } 
} 
0

PHP имеет встроенную функцию для выбора случайного элемента (или элементов) из массива, array_rand()

$sxml = simplexml_load_file("http://gdata.youtube.com/feeds/api/users/TechTubeCentral/uploads?max-results=25"); 
$vidKeys = array(); 
foreach ($sxml->entry as $entry) 
    $vidKeys[] = substr(strrchr($entry->id,'/'),1); 
$randomVidKey = $vidKeys[array_rand($vidKeys)];