随机播放并显示.txt文件的内容

时间:2015-05-20 13:12:35

标签: php file fopen

我正在尝试阅读,随机播放,然后显示文本文件的内容。文本文件包含一个代码列表(每一行都在新行上 - 没有逗号等)。

1490
1491
1727
364
466
//...
783
784
786

我的代码:

$file = fopen("keywords.txt", "r");
shuffle($file);

while (!feof($file)) {
  echo "new featuredProduct('', ". "'". urlencode(trim(fgets($file))) ."')" . "," . "\n<br />";
}

fclose($file);

我得到的结果如下:

new featuredProduct('', '1490'), 
new featuredProduct('', '1491'), 
new featuredProduct('', '1727'), 
new featuredProduct('', '364'), 
new featuredProduct('', '466'), 
//... 
new featuredProduct('', '783'), 
new featuredProduct('', '784'), 
new featuredProduct('', '786'), 

我相信在循环和显示之前我必须对$file变量的内容进行随机播放,正如您所看到的,shuffle函数不起作用或者我没有正确使用它?

我原本希望看到列表随机排列得更多。

2 个答案:

答案 0 :(得分:3)

这应该适合你:

只需使用file()将文件读入数组,然后使用shuffle()对数组进行随机播放。然后你可以循环它并显示它,如下所示:

<?php       

    $lines = file("test.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    shuffle($lines);

    foreach($lines as $line)
        echo "new featuredProduct('', '". urlencode(trim($line)) ."'),\n<br />";

?>

正如我上面所写,shuffle()是一个数组的混乱。但是fopen()会返回一个资源。

答案 1 :(得分:2)

我认为你的问题是php中的shuffle函数必须在参数中有一个数组,就像你在这里看到的: http://www.w3schools.com/php/func_array_shuffle.asp
因此,您必须首先启动一个数组,将所有值添加到其中:http://www.w3schools.com/php/func_array_push.asp然后随机播放,如:

    $file = fopen("keywords.txt", "r");
    $a=array();
    while (!feof($file)) {
        array_push($a,urlencode(trim(fgets($file))));
    }
    fclose($file);
    shuffle($a);
    // And here you display your array shuffled.
    

我希望我能帮助你一点。