ForEach随机数组

时间:2013-06-18 22:51:32

标签: php arrays foreach youtube

我正在尝试制作一个重定向到随机YouTube视频的脚本。我如何获取vidKey,将每个$ vidkey放入一个数组然后随机化该数组,以便重定向到另一个YouTube视频?

$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 个答案:

答案 0 :(得分: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)并将列表放回数据库中。你这样做,直到没有更多的视频键,然后再次激活谷歌查询等等...这样可以避免你的脚本在每次加载页面时查询谷歌,并减少被重定向到同一视频的机会

答案 1 :(得分: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;
    }
}

答案 2 :(得分: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)];