我已经编写了以下函数,但是回显时,fileList为空白。 任何想法为什么会发生这种情况?以及如何解决?
function testing($dir){
echo $dir;
$fileList=array();
function recursiveScan($dir) {
$tree = glob(rtrim($dir, '/') . '/*');
if (is_array($tree)) {
foreach($tree as $file) {
if (is_dir($file)) {
echo $file . '('.filemtime($file).')'.'<br/>';
recursiveScan($file);
$fileList[date('YmdHis',filemtime($file))]=$file;
} elseif (is_file($file)) {
echo $file . '('.filemtime($file).')'.'<br/>';
$fileList[date('YmdHis',filemtime($file))]=$file;
}
}
?>
<pre>
<?php print_r($fileList);?>
</pre>
<?php
}
}
}
编辑:
如果我将代码的print_r位移到下面}处,则它输出...但是我想在搜索完所有目录后将其输出。
function recursiveScan($dir) {
$tree = glob(rtrim($dir, '/') . '/*');
if (is_array($tree)) {
foreach($tree as $file) {
if (is_dir($file)) {
echo $file . '('.filemtime($file).')'.'<br/>';
recursiveScan($file);
$fileList[date('YmdHis',filemtime($file))]=$file;
} elseif (is_file($file)) {
echo $file . '('.filemtime($file).')'.'<br/>';
$fileList[date('YmdHis',filemtime($file))]=$file;
}
}
}
?>
<pre>
<?php print_r($fileList);?>
</pre>
<?php
}
答案 0 :(得分:0)
我认为更好的方法是使用返回值作为函数参数来获取结果。考虑以下功能:
function recursiveScan($dir, $fileList) {
$tree = glob(rtrim($dir, '/') . '/*');
if (is_array($tree)) {
foreach($tree as $file) {
if (is_dir($file)) {
$fileList = recursiveScan($file, $fileList);
} elseif (is_file($file)) {
$fileList[date('YmdHis',filemtime($file))]=$file;
}
}
}
return $fileList;
}
现在您可以通过执行以下操作来触发第一个呼叫:
$dir = "/"; // or from argument
$fileList = recursiveScan($dir, array());
之后,$fileList
将包含文件列表