2013-06-18 41 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,並減少被重定向到相同視頻的機會

+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)];