У меня есть массив в php из recursiveiteratoriterator, он загружается отлично, когда я выгружаю файл. Когда я пытаюсь json_encode его и передать его в браузер я получаю 2 сценария:json_encode возвращает null из php-массива
Я эхо 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);
Я пробовал с и без кодирования, и он дает тот же результат. Я что-то упускаю? Если это имеет значение, я запускаю php 5.4.38 на apache.
Edit:
Я изменил 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);
}
Когда я поставил точно такой же итератор в тестовой странице сам по себе вместе с кодировкой я получаю результаты here
Но когда я вызываю его, используя метод в моем классе (и это единственное, что работает), это here. В конечном итоге я пытаюсь получить список файлов и размеров файлов в виде массива, который является ключом, а размер - значением.
Как вы думаете, 'if (...) continue; {...}' does? Он делает что-то, что может быть предназначено, но это довольно нетрадиционно и легко понять неправильно. –
В контексте итератора он переходит к следующей итерации, если элемент не является файлом. Поправьте меня, если я ошибаюсь, пожалуйста, это только второй раз, когда я использовал один из них и его месяцы (предыдущий вопрос). Я просто знаю, что в php, эхом от массива $ files, до json_encode это прекрасно и показывает, что мне нужно, его просто добавляющий нуль в конец массива после кодирования. –