0

I have a JSON file named 'jason_file.json' that is look like:

[
 {"name":"name1", "city":"city1", "country":"country1"},
 {"name":"name2", "city":"city2", "country":"country2"},
 {"name":"name3", "city":"city3", "country":"country3"},
 {"name":"name4", "city":"city4", "country":"country4"},
 {"name":"name5", "city":"city5", "country":"country5"}
]

Using for loop, I want to remove first two objects from file and save remaining objects in the same order in the 'jason_file.json'. Required result should be:

[
 {"name":"name3", "city":"city3", "country":"country3"},
 {"name":"name4", "city":"city4", "country":"country4"},
 {"name":"name5", "city":"city5", "country":"country5"}
]

How can I do it?

1
  • 1
    I'd use file_get_contents, file_put_contents, json_decode, json_encode and some unset. Could you give it a go yourself? It is excellent practice. Commented Aug 21, 2014 at 22:54

3 Answers 3

3

Try this:

<?php

$json = '[
 {"name":"name1", "city":"city1", "country":"country1"},
 {"name":"name2", "city":"city2", "country":"country2"},
 {"name":"name3", "city":"city3", "country":"country3"},
 {"name":"name4", "city":"city4", "country":"country4"},
 {"name":"name5", "city":"city5", "country":"country5"}
]'; //file_get_contents('jason_file.json');

$json = json_encode(array_slice(json_decode($json, true), 2));
/*                              (1) decode the JSON string
                    <-----------
                    (2) cut off the first two elements
        <-----------
        (3) recode as JSON
*/

echo $json;

//file_put_contents('jason_file.json, $json);

Output:

[{"name":"name3","city":"city3","country":"country3"},{"name":"name4","city":"city4","country":"country4"},{"name":"name5","city":"city5","country":"country5"}]
Sign up to request clarification or add additional context in comments.

Comments

3

To make sure you end up with valid json, I would not edit the file manually.

Instead, read the file, parse the json, use array_shift() or something similar to remove the first two elements in the array, encode the resulting array as json and put it back in the file.

Comments

1

Well firstly, you will want to pull the file into a string. So

$str = file_get_contents('/path/to/my/file');

Then you will want to decode the string contents.

$arr = json_decode($str, true);

Finally shift the array twice

$arr = array_shift($arr);
$arr = array_shift($arr);

Or alternatively, slice the array

$arr = array_slice($arr, 2);

Finally, you can place the json string back into a file.

$newJson = json_encode($arr);
file_put_contents('/path/to/saved/file', $newJson);

Hope this helps!

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.