Remove from json using php

my Current json code:

{"Results":[{"username":"test","password":"test"},{"username":"test","password":"test"},{"username":"google","password":"test"},{"username":"yahoo","password":"test"},{"username":"hotmail","password":"test"}]} 

I want to remove this:

 {"username":"google","password":"test"} 

from code using php. I tried removing by decrypting json to an array, but cant do this. any solution?

0
source share
6 answers
 $json_obj = json_decode($json_string); $unset_queue = array(); foreach ( $json_obj->Results as $i => $item ) { if ($item->username == "google") { $unset_queue[] = $i; } } foreach ( $unset_queue as $index ) { unset($json_obj->Results[$index]); } // rebase the array $json_obj->Results = array_values($json_obj->Results); $new_json_string = json_encode($json_obj); 
+6
source
 <?php $JSON = '{"Results":[' . '{"username":"test","password":"test"},' . '{"username":"test","password":"test"},' . '{"username":"google","password":"test"},' . '{"username":"yahoo","password":"test"},' . '{"username":"hotmail","password":"test"}' . ']}'; // use json_decode to parse the JSON data in to a PHP object $jsonInPHP = json_decode($JSON); // now iterate over the results and remove the one that google $results = count($jsonInPHP->Results); for ($r = 0; $r < $results; $r++){ // look for the entry we are trying to find if ($jsonInPHP->Results[$r]->username == 'google' && $jsonInPHP->Results[$r]->password == 'test'){ // remove the match unset($jsonInPHP->Results[$r]); // now we can either break out of the loop (only remove first match) // or you can use subtract one from $r ($r--;) and keep going and // find all possible matches--your decision. break; } } // now that we removed items the keys will be off. let re-order the keys // so they're back in-line $jsonInPHP->Results = array_values($jsonInPHP->Results); // dump the new JSON data, less google entry echo json_encode($jsonInPHP); 

It would be the way I approach him. I like to avoid foreach(...){} when I need to modify the array itself. The above code, by the way, leaves you:

 { "Results":[ {"username":"test","password":"test"}, {"username":"test","password":"test"}, {"username":"yahoo","password":"test"}, {"username":"hotmail","password":"test"} ] } 
+3
source
 $myArray=json_decode($theJSONstring); unset($myArray['Results'][2]); 
0
source
 $json = ' { "Results":[ {"username":"test","password":"test"}, {"username":"test","password":"test"}, {"username":"google","password":"test"}, {"username":"yahoo","password":"test"}, {"username":"hotmail","password":"test"} ] }'; $arr = json_decode($json, true); array_filter($arr, function($v) { return !($v['username'] == 'google' && $v['password'] == 'test'); }); $json = json_encode($arr); 
0
source
 $input='{"Results":[{"username":"test","password":"test"},{"username":"test","password":"test"},{"username":"google","password":"test"},{"username":"yahoo","password":"test"},{"username":"hotmail","password":"test"}]}'; $json = json_decode($input,true); $match = array('username'=>'google', 'password'=>'test'); unset($json['Results'][array_search($match,$json['Results'])]); 

To do this without using foreach, but provided that you know the exact values ​​that you want to delete

0
source

An old question, formatting your JSON in different ways will help a lot. Each result record must have a unique key to identify it. This simplifies the process of removing or updating this result. There is no reason to iterate over all JSON this way.

The code will look like this:

 <?php $jsonString = '{"Results":{' .'{"username1":{"username":"google","password":"test1"}}' .'{"username2":{"username":"yahoo","password":"test2"}}' .'{"username3":{"username":"msonline","password":"test3"}}' . '}}'; $jsonInPHP = json_decode($jsonString); $password = $jsonInPHP["username1"]["pasword"];//Returns test1 $username = $jsonInPHP["username1"]["username"];//Returns google 

? >

0
source

Source: https://habr.com/ru/post/951652/


All Articles