2017-05-20 88 views
2

我想輸出jason數據,在PHP上看起來像jasondata。 folder是文件夾的名稱,title位於info.txt的第一行。 info.txt位於文件夾下。每個info.txt中有三行,而這些行僅通過製作新行(而不是逗號)分開。文件夾books和我的php文件位於相同的文件夾下。我如何編寫一個PHP代碼?謝謝。 我的PHP代碼在這裏;如何從PHP上的本地文件夾/文件抓取數據並創建JSON數據

function books(){ 

    $array = []; 
    $story = glob("books/" . "*"); 

    foreach($story as $each){ 
     $title = file($each ."/info/txt", FILE_IGNORE_NEW_LINES); 
     $output = array (
      "title" => $title[0], 
      "folder" => $each #i would like to put the name of the folder here 
      ); 
     array_push($array,$review); 
    } 
    print(json_encode($array)); 
} 

Json數據應該看起來像;

{ 
    "books" : [ 
     { 
     "title": "Harry Potter and the Prisoner of Azkaban", 
     "folder": "harrypotter" 
     }, 
     { 
     "title": "The Hobbit", 
     "folder": "hobbit" 
     }, 
     ... (one entry like this for each folder inside books/) 
    ] 
} 

回答

0

使用DirectoryIterator或SCANDIR功能,試試這個代碼波紋管

$dirs = '/directory/'; 
$dir = new DirectoryIterator($dirs); 
$array = array(); 
foreach ($dir as $key => $fileinfo) { 
    if ($fileinfo->isDir()) { 
     //remove hidden files or dot files 
     if ($fileinfo->getBasename() === '.' || $fileinfo->getBasename() === '..') continue); 

     //foldername 
     $array[$key]['folder'] = $fileinfo->getBasename(); 

     //title 
     $array[$key]['title'] = file($array[$key]['folder'].'/info.txt' , FILE_IGNORE_NEW_LINES); 
    } 
} 

$json = json_encode($array); 
print_r($json); 

讓我知道它的工作與否。

編輯 我嘗試在我的本地和它的工作

$dirs = 'books/'; 
$dir = new DirectoryIterator($dirs); 
$array = array(); 
foreach ($dir as $key => $fileinfo) { 
    if ($fileinfo->isDir()) { 
     //remove hidden files or dot files 
     if ($fileinfo->getBasename() === '.' || $fileinfo->getBasename() === '..') continue; 

     //foldername 
     $array[$key]['folder'] = $fileinfo->getBasename(); 

     //title 
     $array[$key]['title'] = file($dirs.'/'.$array[$key]['folder'].'/info.txt' , FILE_IGNORE_NEW_LINES); 
    } 
} 

$json = json_encode($array); 
echo '<pre>'.print_r($json, true).'</pre>'; 

截圖

enter image description here

+0

謝謝您的建議。我複製了你的代碼,並將'目錄'改爲'books /',但我沒有工作......輸出說「未能打開流」... –

+0

是你的php文件與書籍相同的文件夾/目錄?嘗試爲您的圖書文件夾找到正確的路徑。 –

+0

另外我想我不需要)'繼續' –

相關問題