2017-02-27 198 views
-1

我有這個JSON對象數組類型數據,我想插入數組與鍵。如果我做print_r的,視爲該數據如下:插入對象數據到數組PHP

[{"comment":"hola hi ","datecreated":"2017-02-27 13:53:25"},{"comment":"hola hi harambeh ","datecreated" :"2017-02-27 13:53:30"}] 

這裏是我的相關代碼:

$data = json_decode($_REQUEST['array']); 

$formdata = []; 

foreach($data as $value){ 
    $formdata = array('comment' => $value->comment, 'date_created' => $value->datecreated); 
} 

然而,結果數組只用了最後一個對象,這是

Array 
(
    [comment] => hola hi harambeh 
    [date_created] => 2017-02-27 13:53:30 
) 

很明顯,我需要每一項數據,而不僅僅是最後一項。這在JavaScript中應該很容易。

任何想法和幫助非常感謝。

+1

在foreach循環中使用'$ formdata []'並且不需要在新數組中插入,因爲如果使用'json_decode($ _ REQUEST ['array'],true)'給出array read [manual]( http://php.net/manual/en/function.json-decode.php) – gaurav

+1

你應該閱讀[手冊](http://php.net/manual/en/function.json-decode.php) 'json_decode()'。只需傳遞'true'作爲第二個參數,它將被解碼爲數組而不是對象。無需手動完成。 –

回答

0

試試下面

您需要更改$ FORMDATA$ FORMDATA []

更換

foreach($data as $value){ 
     $formdata = array('comment' => $value->comment, 'date_created' => $value->datecreated); 
    } 

隨着

foreach($data as $value){ 
     $formdata[] = array('comment' => $value->comment, 'date_created' => $value->datecreated); 
    } 
+0

我認爲你的意思是相反的。爲什麼不把'true'作爲第二個參數傳遞給'json_decode()'呢? –

+0

如果他需要一些特定的數組鍵,那麼上面的解決方案是更好的... –

+0

他是更改鍵datearchy到date_created。 –

1

您正在更新整個陣列,您需要將項目添加到陣列中,因此您需要[]。改變

 $formdata = array('.......... 

 $formdata[] = array('...... 
0

更改此

foreach($data as $value){ 
$formdata = array('comment' => $value->comment, 'date_created' => $value->datecreated);} 

foreach($data as $value){ 
$formdata[] = array('comment' => $value->comment, 'date_created' => $value->datecreated);} 

問題是在分配在每一個迭代中相同的變量的新數組,而不是添加一個新的項目將存在g數組