2017-05-20 2 views
2

Ich möchte die jason Daten, die wie ein Jasondata unten auf PHP aussieht. folder ist der Name des Ordners und title befindet sich in der ersten Zeile info.txt. info.txt befindet sich unter dem Ordner. Es gibt drei Zeilen in jedem info.txt, und diese Zeilen werden nur durch neue Zeilen (nicht Kommas) getrennt. Ordner , und meine php Datei befindet sich unter dem gleichen Ordner. Wie kann ich einen PHP Code schreiben? Vielen Dank. Mein PHP-Code ist hier;So greifen Sie Daten aus lokalen Ordnern/Dateien auf PHP und erstellen JSON-Daten

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 Daten aussehen sollte;

{ 
    "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/) 
    ] 
} 

Antwort

0

Verwenden DirectoryIterator oder scandir Funktionen, versuchen Sie diesen Code unten

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

lassen Sie mich wissen, ob es funktioniert oder nicht ist.

bearbeitet ich in meinem localhost versuchen und es

$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>'; 

Screenshot für Ihren Vorschlag

enter image description here

+0

Danke gearbeitet. Ich kopierte Ihren Code und änderte 'Verzeichnis' in 'Bücher /', aber ich habe nicht funktioniert ... Die Ausgabe sagte "Fehler beim Öffnen des Streams" ... –

+0

ist Ihre PHP-Datei der gleiche Ordner/Verzeichnis mit Büchern? Versuchen Sie, den richtigen Pfad für Ihren Bücherordner zu finden. –

+0

Auch ich denke, ich brauche nicht) nach 'weiter' –

Verwandte Themen