簡體   English   中英

將 PHP 數據作為 JSON 對象返回

[英]return PHP data as JSON Object

我有一個 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()有 2 個簡單的 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM