Ich fing an, JSON zu lernen und eine Quiz-App zu entwickeln, die JSON von einer PHP-Seite holt, um es als HTML anzuzeigen. Ich wähle Daten von mysql Tabelle mit PHP aus und drucke es als json.php json_encode der gleiche Schlüssel wie Array
<?php
header('Access-Control-Allow-Origin: *');
header("Cache-Control: no-cache");
header('Content-Type: application/json');
include("dbcon.php");
$sql = "SELECT * FROM quiz;";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo json_encode($row, JSON_PRETTY_PRINT)."\r\n";
}
}
else {
echo "nodata";
}
$conn->close();
?>
das Ergebnis:
{
"id": "1",
"question": "ques1?",
"opt1": "Microsoft",
"opt2": "W3C",
"opt3": "Google",
"opt4": "IBM",
"answer": "W3C"
}
{
"id": "2",
"question": "ques2?",
"opt1": "Yahoo",
"opt2": "Google",
"opt3": "Bing",
"opt4": "DuckDuckGo",
"answer": "Google"
}
Dieser Code funktioniert völlig in Ordnung und ziemlich druckt json. Aber wie die gleiche Schlüsselwert als Array zu drucken, so dass die Ausgabe wie-ist
{
"id":[ "1", "2" ],
"question":[ "ques1?", "ques2?" ],
"opt1":[ "asd", "fgh" ],
"opt2":[ "qwe", "rty" ],
"opt3":[ "qwer", "vbbn" ],
"opt4":[ "asdfg", "ascvb" ],
"answer":[ "asd", "fgh" ],
}
Ich glaube, das Ergebnis i machen erwarten wird es einfach Daten von ihm zu lesen, mit Hilfe von Javascript durch etwas wie folgt aus: -
var q1 = myObj.question[0];
Ich sah viele Fragen mit dem gleichen Titel, aber sie sind alle verschiedenen Fälle. Bitte stelle eine Lösung bereit und korrigiere meine Dummheit, wenn ich falsch liege.
Was Sie tun möchten, ist ein Array '$ Fragen', dann verwenden Sie $ Fragen [] = $ row; '. Danach können Sie mit 'json_encode ($ questions)' abschließen, um Ihr einzelnes Array von Frageobjekten zu erhalten. –
Das ist * nicht * gültiger JSON. Und was Sie erreichen wollen, ist bestenfalls suboptimal. Sie wollen etwas wie '[{" id ": ...," question ": ..., ...}, {" id ": ..., ...}]'. – deceze
"dieser Code funktioniert perfekt gut und schön druckt JSON" - oh nein, tut es nicht - das ist nicht JSON. – symcbean