![](/img/trans.png)
[英]Php : json_encode is returning NULL array at the start of the string
[英]json_encode returning null from php array
我有一个来自recursiveiteratoriterator的PHP数组,它在我转储文件时加载正常。 当我尝试json_encode并将其传递给浏览器时,我得到2个场景:
我回应json_编码并获得以下内容:
["\/var\/www\/html\/dev\/workspace\/ftpscript\/test\/10MB.zip",
"\/var\/www\/html\/dev\/workspace\/ftpscript\/test\/test.php"]null
如果我从一个远程PHP脚本(使用2个服务器,源(脚本所在的位置)和获取信息并处理它的那个)从远程服务器和json_decode调用它,它回显产生:
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。
编辑:
我已经改变了一点迭代器,但仍然有相同的结果...我现在有:
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);
}
当我把完全相同的迭代器在测试页面本身与编码一起,我得到的结果在这里
但是当我在我的类中使用该方法调用它时(并且它是唯一运行的)就在这里 。 最终,我试图获取文件列表和文件大小作为数组,文件是关键,大小是值。
(更多评论说答案,但我需要更多空间)。
表达中的括号,Sverri提到什么都不做,只是令人困惑。 把它们留下来吧。
另外$files[] .= $pathname;
看起来很奇怪。 $files[] = ...
附加到数组,而.=
附加到字符串。 同时做两件事都没有意义。 PHP似乎忽略了.=
。 把它拿出来。
所以
if (!$fileinfo->isFile()) continue;{
$files[] .= $pathname;
}
变
if (!$fileinfo->isFile()) continue;
$files[] = $pathname;
这最有可能对您的问题没有帮助。 数组是否包含正确的数据?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.