I know the best way is probably to save the new object at the end of the existing array without a name, but I want to make it a little more complicated to learn how to do this and have it at index value [0] of the array instead A new object is added at the end [arr.length - 1] and I need to save it in a specific array name because in this example I will have multiple arrays. Information is collected by HTML forms.
What I have is:
$_POST['year'], 'link' => $_POST['link'], 'img' => $_POST['img'], ); $array_data[]=$extra; echo "file exist
"; return json_encode($array_data, JSON_PRETTY_PRINT); } else { $datae=array(); $datae[]=array( 'year' => $_POST['year'], 'link' => $_POST['link'], 'img' => $_POST['img'], ); echo "file not exist
"; return json_encode($datae, JSON_PRETTY_PRINT); } } $file_name='newsFeeder'. '.json'; if(file_put_contents("./feeder/{$file_name}", get_data())) { echo 'success'; } else { echo 'There is some error'; } } ?>
The result is a JSON file like this:
[ { "year": "2022", "link": "xxxxxx_01.html", "img": "xxxxxx_01.webp" }, { "year": "2023", "link": "xxxxxx_02.html", "img": "xxxxxx_02.webp" }, . . . . { // <- 这是在索引值[arr.length - 1]处添加的最新对象 // "year": "2024", "link": "xxxxxx_03.html" } ]
But what I want to achieve is this:
{ "newsFeeder": [ // <- 这是我需要添加新对象的数组 // { // <- 这是在索引值[0]处添加的最新对象 // "year": "2024", "link": "xxxxxx_06.html", "img": "xxxxxx_06.webp" }, . . . . { "year": "2023", "link": "xxxxxx_02.html", "img": "xxxxxx_02.webp" }, { "year": "2022", "link": "xxxxxx_01.html", "img": "xxxxxx_01.webp" } ], "whyComplicate_things":[ // 我需要保持此数组不变 // {"a":"01.webp", "title":"title 01"}, {"a":"02.webp", "title":"title 02"}, {"a":"03.webp", "title":"title 03"} ] }
I've tried different methods, but those either clear everything and only add the collected information, or end up breaking things. Hope this helps me learn how to achieve this goal!
To add an element to the beginning of an array, if you are using PHP > 7.4, you can append using
, ...$array_name
.Similar to the following code:
You can use
array_unshift
to achieve this function. It shifts all array elements backward one and inserts the second parameter at index0
of the first parameter of the function call.