2014-10-09 93 views
1

有沒有辦法在開始時寫入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',json_encode($data)); 
    unset($data); 
+1

後一些代碼,如果你能 – bruchowski 2014-10-09 02:23:00

+4

只要確保使當前值的數組,然後就轉移回來,然後重新編碼再次,也許裏面推然後再打,如果有涉及 – Ghost 2014-10-09 02:23:16

+2

日期要添加到@鬼的評論:http://php.net/manual/en/function.array-unshift.php – jeroen 2014-10-09 02:24:28

回答

0

在上面簡單的例子,像@jeroen在評論中說,你可以使用array_unshift()用於此目的:

因此,可以說一開始我們有data.json有這樣的內容:

[{"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":"some data 4"},{"data":"somedata 1"},{"data":"somedata 2"},{"data":"somedata 3"}] 

注:Asumming你有正確的權限。