2017-02-25 3 views
2

Ich möchte Array zu einer existing .json Datei mit einem HTML-Formular hinzufügen.Array_push gibt Null in JSON-Datei

das ist mein PHP:

$myFile = "data.json";  
$newArray = array(
    'name'=> $_POST['name'], 
    'date'=> $_POST['date'] 
); 

$fileTmp = file_get_contents($myFile); 
$tempArray = json_decode($fileTmp); 
array_push($tempArray, $newArray); 
$jsonData = json_encode($tempArray); 
file_put_contents($myFile, $jsonData); 

dies meine JSON ist:

[ 
    { 
    "name": "name 1", 
    "date": "01.02.2017" 
    }, 
    { 
    "name": "name 2", 
    "date": "05.02.2017" 
    }, 
    { 
    "name": "name 3", 
    "date": "05.03.2017" 
    } 
] 

Das Problem ist, ich die Warnung

bekam

„array_push() erwartet Parameter 1 zu sein Array, Null gegeben in ... "

und im JSON gibt es nur null. Was ist mein Problem mit meinem Code?

+2

'$ tempArray = json_decode ($ fileTmp, true); array_push ($ tempArray, $ newArray); 'versuchen Sie es und sagen Sie –

+0

Tritt der Fehler auch mit der angegebenen JSON-Datei oder nur beim Start mit einem leeren? – aghidini

+2

@Anant oh ja, danke! nicht gesehen, dass ... Aghidini Problem gelöst, aber es war mit der bereitgestellten JSON –

Antwort

2

einen zweiten Parameter zu json_decode() hinzufügen und setzen Sie sich auf true: -

$tempArray = json_decode($fileTmp,true); 
array_push($tempArray, $newArray); 
1

Neben die assoziative Version von json_decode wie bereits in der anderen Antwort verwenden, erklärte, ich denke, dass das Problem Datei Ihre Eingabe json ist .

Sie sollten einen gültigen Inhalt prüfen und Ihre Standard-Array erstellen, wenn die json leer ist:

$fileTmp = file_get_contents($myFile); 
$tempArray = json_decode($fileTmp, true); 
if (!$tempArray) { 
    $tempArray = array(); 
} 
... 
+0

Eigentlich ist sein Json, was er gezeigt hat gültig, aber dieser Code ist auch nützlich, um Fehler zu verhindern. Also +1. –

+0

@Anant Ich stimme zu, dass seine Eingabe JSON gültig ist, aber ich vermutete, dass er die Fehler nur am Anfang erhielt, das heißt, wenn die Eingabe JSON leer war (oder nicht existiert). Ich dachte, dass 'json_decode' sollte ein gültiges Array auch mit' false' als zweiten Parameter erzeugen, es sollte einfach ein Array von Objekten erzeugen, aber der OP-Fehler ist über den ersten Parameter (d. H. Das Array). – aghidini

+0

Wenn Sie versuchen, ein Array in ein Array von Objekten zu schieben, erhalten Sie diesen Fehler auch (ich denke) –

-1

I-Code eingehalten, es funktioniert. Überprüfen Sie die Berechtigungen für die Datei "data.json".