2017-07-31 46 views
0

我正在嘗試使用正確的格式創建JSON文件,以供Lazy Loader通過PHP使用。我將內容放入一個關聯數組中,並將其放入另一個多維數組中。PHP將內容添加到具有正確結構的JSON文件(懶惰加載程序)

這裏是我使用此代碼:

<?php 

//I will fetch this content from the database later. This is just for example. 
$posts = array("<div>Item 1</div>", "<div>Item 2</div>", "<div>Item 3</div>"); 

$items = array(); 
$length = count($posts); 

for($i = 0; $i < $length; $i++){ 
    $items["html"] = $posts[$i]; 
} 

$posts_datas = array("items" => array($items)); 

/* JSON file */ 
file_put_contents('lazyloader/datas.json', json_encode($posts_datas, JSON_PRETTY_PRINT)); 

?> 

文件被創建,有隻有一個元素正確的格式。我需要他們。

JSON文件代碼:

{ 
    "items": [ 
     {"html": "<div>Item 3<\/div>"} 
    ] 
} 

代碼我想:

我需要你的幫助。有沒有人有這個解決方案?謝謝。

+0

你想要的JSON文件是不是有效的JSON – RiggsFolly

+0

也'{}'表示的對象。你真的希望每個'items'是一個對象還是一個數組 – RiggsFolly

+0

ALSO在同一個數組中不能有多個具有相同名稱的assoc鍵 – RiggsFolly

回答

1

好了修改一次,我更好地理解了這個問題。

假設$posts通過查詢從您的數據庫中收集,這將實現你想要的。

//I will fetch this content from the database later. This is just for example. 
$posts = array("<div>Item 1</div>", "<div>Item 2</div>", "<div>Item 3</div>"); 

$items = array(); 

foreach ($posts as $post){ 
    $items['items'][] = ['html' => $post]; 
} 

// now rewrite the file with the new content added 
file_put_contents('datas.json', json_encode($items, JSON_PRETTY_PRINT)); 

其結果將是

{ 
    "items": [ 
     { 
      "html": "<div>Item 1<\/div>" 
     }, 
     { 
      "html": "<div>Item 2<\/div>" 
     }, 
     { 
      "html": "<div>Item 3<\/div>" 
     } 
    ] 
} 
+0

感謝您的幫助。我只有一個問題:如果我從數據庫中動態獲取帖子,這是否工作?例如,如果郵編2被刪除,它也會從json文件中消失? –

+0

啊一會兒。所以你想讓JSON呈現從數據庫中讀取的當前狀態。我雖然想將某些東西添加到現有的json文件 – RiggsFolly

+0

那麼'datas.json'文件是從這個腳本中的new創建的嗎?或者你是否將某些東西添加到已有的'datas.json'文件中? – RiggsFolly