2017-02-27 172 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数组