delete im Array Json

hups1803

Erfahrenes Mitglied
hallo,

ich bastel immnoch an meinen chat, komme mit dem deleter nicht weiter

mein array ist ein json array und sieht so aus
PHP:
{"time":1425989082,"users":[],"chats":[{"user":"hups","date":"9 March 09:12","chat":"hallo"},{"user":"hups","date":"10 March 13:04","chat":"<img style=\"vertical-align:middle\"src=\"smilies\/lazycrasy\/32\/smiley43.png\"> nature"}]}

löschen habe ich so versucht:
PHP:
$keydel= $_GET['del'];

$json_url = "chat/chattxt/hups/English.txt";
$json = file_get_contents($json_url);
$links = json_decode($json, TRUE);

foreach ($links['chats'] as $key => $item) {
  
     if($keydel== $key){unset($item);
    
     //print_r($item); wenn ich es hier ausgebe hatt er es gelöscht
     }
 
  $newchats=$item;
}
$chats = json_encode($newchats);

file_put_contents($json_url, $newchats);

leider löscht er dann alles.

komme nicht weiter ich gebe per get den key des json array zur del.php

nun möchte ich den eintrag löschen und die Datei neu schreiben.
 
Was mir nicht einleuchtet, ist, warum Du dafür eine Schleife brauchst, denn über den Schlüssel kann man direkt zugreifen, jedoch nicht auf den darunter gespeicherten Wert. Insofern sollte eigentlich folgendes vollkommen ausreichen:
PHP:
unset( $links[ 'chats' ][ $keydel ] );
 
danke das geht jetzt

PHP:
$json_url = "chat/chattxt/hups/English.txt";
$json = file_get_contents($json_url);
$links = json_decode($json, TRUE);
unset( $links[ 'chats' ][ $keydel ] );

//print_r($links);
$chats = json_encode($links);

file_put_contents($json_url, $chats);
ist das so ok das funzt auch soweit beim ersten mal hat er die keys vor jeden eintrag gespeichert wie verhindere ich das
so sah das aus :
PHP:
{"time":1426284425,"users":[],"chats":{"0":{"user":"hups","date":"8 March 20:33","chat":"asda"},"1":{"user":"harry","date":"8 March 20:45","chat":"sdad"},"2":{"user":"harry","date":"8 March 20:46","chat":"harry"},"3":{"user":"hups","date":"8 March 20:48","chat":"gjh"},"4":{"user":"hups","date":"8 March 21:37","chat":"hups"},"5":{"user":"hups","date":"8 March 21:38","chat":"hups"},"6":{"user":"hups","date":"8 March 21:39","chat":":smiley14:"},"7":{"user":"hups","date":"8 March 21:40","chat":":smiley15:"},"8":{"user":"hups","date":"8 March 21:42","chat":"test"},"9":{"user":"hups","date":"8 March 21:51","chat":":smiley16:"},"10":{"user":"hups","date":"8 March 21:54","chat":"<img style=\"vertical-align:middle\"src=\"smilies\/lazycrasy\/32\/smiley12.png\">"},"11":{"user":"hups","date":"8 March 22:01","chat":"hallo hups"},"12":{"user":"hups","date":"8 March 22:03","chat":"asdasd"},"13":{"user":"hups","date":"8 March 22:03","chat":"<img style=\"vertical-align:middle\"src=\"smilies\/lazycrasy\/32\/smiley12.png\">"},"14":{"user":"hups","date":"9 March 11:52","chat":"<img style=\"vertical-align:middle\"src=\"smilies\/lazycrasy\/32\/smiley71.png\">"},"15":{"user":"hups","date":"9 March 11:52","chat":"<img style=\"vertical-align:middle\"src=\"smilies\/lazycrasy\/32\/smiley43.png\">"},"16":{"user":"hups","date":"10 March 13:11","chat":"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores"},"18":{"user":"hups","date":"13 March 18:02","chat":"<img style=\"vertical-align:middle\"src=\"smilies\/lazycrasy\/32\/smiley15.png\">"},"19":{"user":"hups","date":"13 March 18:03","chat":"<img style=\"vertical-align:middle\"src=\"smilies\/lazycrasy\/32\/smiley17.png\">"}}}

es muss aber ohne die keys sein :

PHP:
{"time":1426284878,"users":{"1426284930":"hups"},"chats":[{"user":"hups","date":"13 March 23:13","chat":"test 1"},{"user":"hups","date":"13 March 23:13","chat":"test 2"}]}

komischer weise hat er es nur beim ersten löschen so gemacht
 
Zurück