Ich habe die Daten in einem Textformat gespeichert und PHP verwendet, um eine zufällige Zeile in der Datei zu erhalten und in JSON zu konvertieren. Der Code war wie folgt:Konvertieren einer CSV in ein bestimmtes JSON-Format und Ausgabe einer zufälligen Zeile
<?php
// open the text file
$Textfile = file('file.txt', FILE_IGNORE_NEW_LINES);
// get a random line
$rand = mt_rand(0, count($Textfile)-1);
// set content title
$title = "Same Title";
// set a random content
$content = $Textfile[$rand];
// result
$result = array('content' => $content,
'title' => $title);
// set header
header('Content-Type: application/json');
// print the random quote
echo json_encode($result);
?>
Die Json Ausgabe lautet:
{"content":"some random content from a book","title":"Same Title"}
Aber ich bin das Hinzufügen von mehr Bücher so habe ich beschlossen, die Datei im CSV-Format zu erstellen. Die CSV hat die folgende Struktur:
ID | title | content | page
1 | some unique title | some content | 25
2 | some other title | some other cont | 12
so die gewünschte Ausgabe sein wird:
{"ID":"1", "title":"some unique title", "content":"some content", "page", "25"}
Ich habe versucht, meine vorhandenen PHP-Code zu verwenden und einfach die csv öffnen statt der Textdatei:
<?php
// read the csv file
$file="newformat.csv";
$csv= file_get_contents($file);
// create the array
$array = array_map("str_getcsv", explode("\n", $csv));
$json = json_encode($array);
// set header
header('Content-Type: application/json');
// print
echo json_encode($json);
?>
aber dies gibt nicht die gleiche Ausgabe wie die vorherige und ich bin mir nicht sicher, wie Sie die zufällige Zeile implementieren.
Irgendwelche Vorschläge, wie man das erreicht?
Dank für Ihre Antwort danken, nachdem diese auf den Server hochladen, ich Fehler angezeigt 500. Nach der Fehlerprotokolle überprüft, bemerkte ich dieses 'mod_fcgid: stderr: PHP Parse error: syntax error, unerwartet '['. .. index.php on line 2' –
Möglicherweise haben Sie eine ältere Version von PHP. Sie können versuchen, diese Zeile zu ersetzen: 'const KEYS = ['ID', 'Titel', 'Inhalt', 'Seite'];' mit: '$ keys = array ('ID', 'title', ' content ',' page '); ' und diese Zeile: ' $ array = array_combine (KEYS, str_getcsv ($ zeile)); ' mit diesem: ' $ array = array_combine ($ keys, str_getcsv ($ line)); ' – jpec
das Problem ist, dass ich einige Male" falsch "bekomme. Ich habe versucht, 'randomLineNumber (rand (1, $ num);', aber immer noch bei der zufälligen Ausgabe von Json Ich bekomme falsch –