У меня есть сценарий PHP, который должен вернуть 3 вещи для всех файлов, содержащихся в определенном каталоге.
Я могу повторить эти три значения для каждого файла, но я хочу вернуть все эти данные в формате JSON. Каков наилучший способ преобразовать все эти данные в формат JSON?
function listAllFiles($dir)
{
$format = "d/m/y h:m";
$filesInfo;
if (is_dir($dir))
{
if ($dh = opendir($dir))
{
while (($file = readdir($dh)) !== false)
{
if ($file != "." && $file != "..")
{
echo findFileSize($dir.'/'.$file)." ".date($format, filemtime($dir.'/'.$file))." ";
echo $file.'<br>';
}
}
}
closedir($dh);
}
else {
print 'folder not found';
}
}
функции
- имя файла
использование glob()
найти файлы в каталоге
- размер файла
использование filesize()
найти размер файла
- Время создания файла
использование filectime()
найти время последнего создания файла
Каков наилучший способ преобразовать все эти данные в формат JSON?
использование json_encode()
преобразовать массив PHP в массив JSON
Пример кода
function listAllFiles($dir){
if(!isdir($dir)) { print "Folder not found"; return; }
$files = glob($dir);
$arr = array();
foreach($files as $file){
$file = array();
//Get filename
$file["name"] = $file;
//Get filesize
$file["size"]= filesize($file);
//Get file creation time
$file["creation_time"] = filectime($file);
array_push($arr, $file);
}
$json = json_encode($arr);
return $json;
}
echo listAllFiles("/folder/");
В PHP есть две простые функции json json_encode()
а также json_decode()
json_encode()
преобразует массив PHP или объект в строку JSON, поэтому создайте массив или объект, содержащий все ваши данные, а затем отобразите результат json_encode()
вернуться к вызывающему приложению.
function listAllFiles($dir) {
$results = array();
$results['error'] = false;
$format = "d/m/y h:m";
$filesInfo;
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if ($file != "." && $file != "..") {
// create an object to hold data for this file
$o = new stdClass();
$o->filesize = findFileSize($dir.'/'.$file)
$o->filedate = date($format, filemtime($dir.'/'.$file));
$o->filename = $file;
// put this object into the results array
$results[] = $o;
}
}
}
closedir($dh);
} else {
$results['error'] = true;
$results['err_msg'] = 'folder not found';
}
return $results;
}
$result = listAllFiles('a/b/c');
echo json_encode($result);