Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php中数组的随机文件_Php - Fatal编程技术网

php中数组的随机文件

php中数组的随机文件,php,Php,我已经成功地制作了一个php脚本,它使用文件夹中的文件创建了一个数组 问题是我想让它从数组中随机抓取一个文件。当我手动设置目录中存在的文件数时,它可以正常工作,而不是当我试图计算数组的大小时。这是我想到的 $dir = 'MemeDatabase'; $fileNames = array(); if(is_dir($dir)){ $handle = opendir($dir); while(false !== ($file = readdir($handle))){

我已经成功地制作了一个php脚本,它使用文件夹中的文件创建了一个数组

问题是我想让它从数组中随机抓取一个文件。当我手动设置目录中存在的文件数时,它可以正常工作,而不是当我试图计算数组的大小时。这是我想到的

$dir = 'MemeDatabase';
$fileNames = array();
if(is_dir($dir)){
    $handle = opendir($dir);
    while(false !== ($file = readdir($handle))){
        if(is_file($dir.'/'.$file) && is_readable($dir.'/'.$file)){
            $fileNames[] = $file;
        }
    }
closedir($handle);
int count($fileNames);
$fileNames = array_reverse($fileNames);
$rand_keys = array_rand($fileNames, $count);
echo $fileNames[$rand_keys[0]] . "\n";
print_r($fileNames);

} else {
    echo "<p>There is an directory read issue</p>";
}
$dir='MemeDatabase';
$fileNames=array();
if(is_dir($dir)){
$handle=opendir($dir);
while(false!=($file=readdir($handle))){
if(is_file($dir./'.$file)&&is_可读($dir./'.$file)){
$fileNames[]=$file;
}
}
closedir($handle);
整数计数(文件名);
$fileNames=array\u reverse($fileNames);
$rand\u keys=array\u rand($filename,$count);
echo$fileNames[$rand\u keys[0]]。“\n”;
打印(文件名);
}否则{
echo“存在目录读取问题”

”; }
您可以删除部分代码,只需使用默认值,即从阵列中仅拾取一项

    closedir($handle);
//     int count($fileNames);    // This is an error anyway
//     $fileNames = array_reverse($fileNames);    // Not needed
//     $rand_keys = array_rand($fileNames, $count);
    $fileName = $fileNames[array_rand($fileNames)];
    echo $fileName;

先将数组洗牌一次,然后选择想要的数据。只需使用
$fileName=array\u rand($fileName)
int count($fileName)
array\u reverse()
。和
$rand\u keys=array\u rand($filename,$count)
是错误的,如果您只想返回一个键,请使用
$rand\u keys=array\u rand($filename,1)这很有效,谢谢!冷却结束后,我将接受答案:)