我在 php 中有一个来自 recursiveiteratoriterator 的数组,当我转储文件时它加载得很好。当我尝试对其进行 json_encode 并将其传递给浏览器时,我得到了 2 个场景:
我回显 json_ 编码并得到以下信息:
["\/var\/www\/html\/dev\/workspace\/ftpscript\/test\/10MB.zip",
"\/var\/www\/html\/dev\/workspace\/ftpscript\/test\/test.php"]null
如果我从远程服务器和 json_decode 它的远程 PHP 脚本(使用 2 个服务器、源(脚本所在的位置)和获取信息并处理它的那个)调用它,它会回显:
NULL
剧本:
$files = array();
$startpath = getcwd()."/test/";
$fileinfos = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($startpath)
);
foreach($fileinfos as $pathname => $fileinfo) {
if (!$fileinfo->isFile()) continue;{
$files[] .= $pathname;
}
}
$utfEncoded = array_map("utf8_encode", $files );
echo json_encode($utfEncoded);
我已经尝试过编码和不编码,它产生了相同的结果。我错过了什么吗?如果它有所作为,我在 apache 上运行 php 5.4.38。
编辑:
我已经改变了iteraor,但仍然产生相同的结果......我现在有:
function ft_srcscan() {
$path = getcwd();
$directory = new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS);
$iterator = new RecursiveIteratorIterator($directory);
$files = array();
foreach ($iterator as $info) {
$files[$info->getPathname()] = $info->getSize();
}
echo json_encode($files);
}
当我将完全相同的迭代器连同编码一起放入测试页面时,我在这里得到了结果
但是当我使用我的类中的方法调用它时(它是唯一运行的东西)就在这里。最终,我试图将文件列表和文件大小作为数组获取,文件是键,大小是值。