所以我用下面的代碼從一個文件夾拉一個隨機文件,我想使它所以不會再拉起當前文件的機會(即:連續兩次看到相同的圖像/文檔)。隨機文件夾從(不重複)
我該怎麼辦?提前致謝!
function random_file($dir = 'destinations')
{
$files = glob($dir . '/*.*');
$file = array_rand($files);
return $files[$file];
}
所以我用下面的代碼從一個文件夾拉一個隨機文件,我想使它所以不會再拉起當前文件的機會(即:連續兩次看到相同的圖像/文檔)。隨機文件夾從(不重複)
我該怎麼辦?提前致謝!
function random_file($dir = 'destinations')
{
$files = glob($dir . '/*.*');
$file = array_rand($files);
return $files[$file];
}
存儲在cookie或在會議最後一次查看的文件名。
下面是如何用一個cookie做到這一點:
function random_file($dir = 'destinations') {
$files = glob($dir . '/*.*');
if (!$files) return false;
$files = array_diff($files, array(@$_COOKIE['last_file']));
$file = array_rand($files);
setcookie('last_file', $files[$file]);
return $files[$file];
}
本質:存儲在數組中使用的每個文件的名稱;每次你拉一個新名字時,檢查它是否已經存在於數組中。
in_array()
會幫你。 array_push()
將幫助填充「使用的文件」數組。
你可以使陣列static一個有列表可供您隨時調用函數(而不是使用全局變量)。
$picker = new FilePicker();
$picker->randomFile();
$picker->randomFile(); // never the same as the previous
-
class FilePicker
{
private $lastFile;
public function randomFile($dir = 'destinations')
{
$files = glob($dir . '/*.*');
do {
$file = array_rand($files);
} while ($this->lastFile == $file);
$this->lastFile = $file;
return $files[$file];
}
}
你的問題是模糊的...你只是意味着你不希望看到它連續兩次,或者你真的不想再看到文件,永遠不會消失? –
你的意思是在一個請求?還是應該在請求之間堅持? – MDrollette