【问题标题】:PHP random folderPHP随机文件夹
【发布时间】:2017-05-08 02:56:46
【问题描述】:

假设我有以下目录树

tmp
 ---cat
 ---dog
 ---mouse

我的 index.php 与 tmp 文件夹位于同一目录中。我将如何使用 PHP 将随机文件夹名称保存为变量?我尝试了以下代码,但没有成功。

<?php
function listFolderFiles(){
    $dir = './tmp';
    $ffs = scandir($dir);
    $randomFolder = '';
    foreach($ffs as $ff){
        if($ff != '.' && $ff != '..'){
            $randomFolder = $randomFolder + $ff;
        }
    }
        echo $randomFolder;
    echo '</ol>';
}
listFolderFiles();
?>

【问题讨论】:

  • 当函数中没有其他内容输出任何 HTML(包括起始标记)时,为什么要回显 &lt;/ol&gt;
  • $randomFolder = $randomFolder + $ff;应该是 $randomFolder = $randomFolder.$ff;或 $randomFolder = $ff;
  • 这肯定不会创建一个random文件夹名称。你为什么不使用 php 提供的功能来完成这样的任务呢?
  • 加号在那里做什么? $randomFolder + $ff? $randomFolder$ff 都是 字符串
  • 对不起,我在做$randomFolder + $ff时想到了python

标签: php html directory


【解决方案1】:

创建,是指返回/回显吗?

我认为您的函数不会生成随机文件夹。它将返回最后一个文件夹。

function listFolderFiles(){
  $dir = './tmp';
  $Ignore = array('.','..'); // build an ignore array
  $Results = array();
  $ffs = scandir($dir);
  foreach($ffs as $ff){
      if(!in_array($ff,$Ignore) && is_dir("./tmp/".$ff)){ // if filename is folder and not in ignore array
          $Results[] = $ff; // add filename to results
      }
  }
  shuffle($Results); // shuffle/randomize the results
  echo $Results[0];
}
listFolderFiles();

【讨论】:

    【解决方案2】:

    另一种解决方案是内置DirectoryIterator 对象,用于遍历文件系统。请看以下示例。

    $results = [];
    $dir = new DirectoryIterator(dirname(__FILE__));
    foreach ($dir as $fileinfo) {
        if (!$fileinfo->isDot() && $fileinfo->isDir()) {
            $results[] = $fileinfo->getFilename();
        }
    }
    

    给定的代码遍历给定的目录并返回给定目录中包含的所有目录,除了点。

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 2012-05-02
      • 2014-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      相关资源
      最近更新 更多