以JSON对象的形式返回PHP数据

return PHP data as JSON Object

本文关键字:返回 PHP 数据 JSON 对象      更新时间:2023-09-26

我有一个PHP脚本,它必须为特定目录中包含的所有文件返回3个内容。

  1. 文件名
  2. 文件大小
  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';
    }
}

函数

  1. 文件名

使用glob()查找目录中的文件

  1. 文件大小

使用filesize()查找文件的大小

  1. 文件创建时间

使用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_encode()json_decode() 中有两个简单的json函数

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);