Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将对象数据插入数组PHP_Php_Arrays_Json_Object - Fatal编程技术网

将对象数据插入数组PHP

将对象数据插入数组PHP,php,arrays,json,object,Php,Arrays,Json,Object,我有这个JSON对象数组类型的数据,我想用键插入到数组中。如果我打印,数据如下所示: [{"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 = []; foreac

我有这个JSON对象数组类型的数据,我想用键插入到数组中。如果我打印,数据如下所示:

[{"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中应该很简单

非常感谢您的任何想法和帮助。

请尝试下面的内容

您需要将$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);
    }

您正在更新整个阵列,您需要的是向阵列中添加一个项,以便需要
[]
。改变

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

改变这个

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);}

问题是在每次迭代中将一个新数组分配给同一个变量,而不是向现有数组添加一个新项

在foreach循环中使用
$formdata[]
,不需要在新数组中插入,因为如果使用
json\u decode($\u REQUEST['array',true)
读取数组,则应该阅读关于
json\u decode()
。只需将
true
作为第二个参数传递,它将被解码为数组而不是对象。不需要手动操作。我想你的意思是相反的。为什么不直接将
true
作为
json_decode()
的第二个参数传递呢?如果他需要一些特定的数组键,那么上面的解决方案会更好……他将key datecreated更改为date_created。这很公平,但你的“Rreplace…with…”仍然是错误的选择对不起,兄弟。。。如果可能的话,请编辑答案。谢谢
foreach($data as $value){
$formdata[] = array('comment' => $value->comment, 'date_created' => $value->datecreated);}