2016-08-03 3 views
0

Ich machte einen einfachen Texteditor und arbeite jetzt an Image Upload und Image Manager. Ich habe Manager eingerichtet, um .json Datei mit allen Bildern zu lesen, und es funktioniert ok. Das Problem besteht darin, dass PHP-Skripte tatsächlich neu hinzugefügte Bilder zu diesem json schreiben.schreibe alle Dateien im Verzeichnis nach JSON

$file = "images.json"; 
$arr_data = array(); 

foreach(glob('/uploads/*') as $image) { 
    $arr_data = array(
     'link' => $image, 
     'tag' => 'images', 
    ); 
} 

$jsondata = file_get_contents($file); 
$arr_data = json_decode($jsondata, true); 

array_push($arr_data,$jsondata); 

$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT); 
file_put_contents($file, $jsondata)); 

Ich erhalte

Warning: array_push() erwartet 1 Parameter Array sein

sogar tho Arraydaten vorgesehen ist. Wie löst man das?

+0

easies Weg ist, Ausgabe '$ arr_data' und prüfen. Und denken Sie daran - wenn Ihnen der Fehler sagt, dass das Argument kein Array ist, handelt es sich wirklich nicht um ein Array. –

+0

Fangen Sie mit einer leeren Datei an, d. H. Diese Datei "images.json" – RiggsFolly

+0

zeigt nach dem Drucken ein leeres Array an. und ja, ich habe eine leere JSON-Datei –

Antwort

1

Wenn Sie mit einer leeren Datei heißt beginnen, werden images.json dann das erste Mal laufen Sie diese 2 Zeilen

$jsondata = file_get_contents($file); 
$arr_data = json_decode($jsondata, true); 

die zweite Zeile wahrscheinlich $arr_data in einen boolean verändern wird. Als json_decode() kann nothing in ein Array nicht konvertieren.

diese So fügen Sie die Datei für

Verwendung zu initialisieren
<?php 
$file = "images.json"; 
file_put_contents($file, '[]'); // init the file 

Sie Wiederverwendung auch die $arr_data Variable dies so ändern auch und Sie das neue Array überschreiben sowie

$file = "images.json"; 
file_put_contents($file, '[]'); // init the file 

$arr_data = array(); 

foreach(glob('/uploads/*') as $image) { 
    // amended to not reuse $arr_data 
    // ameded to not overwrite the array as you build it 
    $new_arr[] = array('link' => $image, 'tag' => 'images'); 
} 

$jsondata = file_get_contents($file); 
$arr_data = json_decode($jsondata, true); 

array_push($arr_data,$new_arr); 

$jsondata = json_encode($arr_data, JSON_PRETTY_PRINT); 
file_put_contents($file, $jsondata)); 
+0

, also habe ich die JSON-Datei bearbeitet und Platzhalterbilder hinzugefügt. nach dem Ausführen des Skripts zeigt es genau den gleichen Fehler und JSON-Datei wurde auf null geändert –

+0

Auch entdeckte eine Variable wiederverwenden – RiggsFolly

+0

Und Sie überschreiben das Array, das Sie aus dem Glob als auch – RiggsFolly