Php 添加到json对象顺序

Php 添加到json对象顺序,php,json,Php,Json,有没有一种方法可以在开始而不是结束时写入json对象?当我现在加的时候,就是把它放在底部。我需要它在顶部,因为最新的数据在开始 <?php $file = file_get_contents('./data.json'); $data = json_decode($file); unset($file); $data[] = array('data'=>'some data'); file_put_contents('data.json',js

有没有一种方法可以在开始而不是结束时写入json对象?当我现在加的时候,就是把它放在底部。我需要它在顶部,因为最新的数据在开始

<?php
    $file = file_get_contents('./data.json');
    $data = json_decode($file);
    unset($file);
    $data[] = array('data'=>'some data');
    file_put_contents('data.json',json_encode($data));
    unset($data);

在上面这个简单的例子中,就像@jeroen在评论中说的那样,您可以使用
数组\u unshift()
来实现此目的:

让我们先假设我们有
data.json
,内容如下:

[{"data":"somedata 1"},{"data":"somedata 2"},{"data":"somedata 3"}]
[{"data":"some data 4"},{"data":"somedata 1"},{"data":"somedata 2"},{"data":"somedata 3"}]
您希望在它前面加上值

$file = file_get_contents('data.json'); // get the file
$data = json_decode($file, true); // turn it into an array (true flag)
unset($file);
// $data[] = array('data'=>'some data');
// Don't use this, this will append/push the data in the end
array_unshift($data, array('data' => 'some data 4')); // unshift it
file_put_contents('data.json',json_encode($data)); // put it back together again
unset($data);
最后,你会看到这样的情况:

[{"data":"somedata 1"},{"data":"somedata 2"},{"data":"somedata 3"}]
[{"data":"some data 4"},{"data":"somedata 1"},{"data":"somedata 2"},{"data":"somedata 3"}]

注意:如果您拥有正确的权限。

如果您能确保将当前值设置为数组,则发布一些代码,然后将其向后移动,然后再次重新编码,或者可能将其推到内部,然后在涉及日期时诉诸于@Ghost的注释: