我正在尝试阅读,随机播放,然后显示文本文件的内容。文本文件包含一个代码列表(每一行都在新行上 - 没有逗号等)。
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函数不起作用或者我没有正确使用它?
我原本希望看到列表随机排列得更多。
答案 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.
我希望我能帮助你一点。