如何在每次会话之前随机播放文件?

时间:2015-12-14 21:09:44

标签: php shuffle

我在这个论坛上整天搜索但是找不到任何答案。

我使用以下php代码在每个页面加载中显示myfile.txt的下一行(遍历整个文件时循环):

<?php
session_start();
$item = file("myfile.txt");
$itemCount = count($item);

if ($_SESSION['sess_row'] === NULL) {
$_SESSION['sess_row'] = 0;
} else {
$_SESSION['sess_row'] = ($_SESSION['sess_row'] + 1) % $itemCount;
}

echo $item[$_SESSION['sess_row']];
?>

现在我希望在每次会话之前将myfile.txt中的行重新排列。

例如,如果myfile.txt包含5行,则现在每个会话以相同顺序显示行:123451234512345...

使用随机播放时,它应显示一个会话:325413254132541...,另一个会话:413254132541325...,另一个会话:142351423514235...,依此类推。

如何在每次会话之前将上述代码更改为随机播放myfile.txt

2 个答案:

答案 0 :(得分:0)

每次使用shuffle来重新排列数组。

$item = file("myfile.txt");
shuffle($item);

如果您需要为每个用户设置不同的号码,您应该拥有一个数据库或其他东西(它可能只是一个包含一个号码的文件)来跟踪已经分配给用户的项目数量。每次,读取该数字(称之为光标),分配与该光标关联的数字,将光标递增1并将其写回文件(或数据库......)

答案 1 :(得分:0)

如果您需要唯一数据,可以使用array_unique

$item = file("myfile.txt");
$item = array_unique($items);
shuffle($item);