将对象数据插入数组PHP [重复]

Posted

技术标签:

【中文标题】将对象数据插入数组PHP [重复]【英文标题】:Insert Object data To Array PHP [duplicate] 【发布时间】:2017-07-17 17:02:55 【问题描述】:

我有这个 JSON 对象数组类型数据,我想用键插入到数组中。如果我做print_r,看到的数据如下:

["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 中应该很容易。

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

【问题讨论】:

在 foreach 循环中使用 $formdata[] 并且不需要插入新数组,因为如果使用 json_decode($_REQUEST['array'],true) 会读取数组 manual 您应该阅读有关json_decode() 的manual。只需将true 作为第二个参数传递,它将被解码为数组而不是对象。无需手动操作。 【参考方案1】:

试试下面

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

【讨论】:

我认为你的意思是相反的。为什么不直接将true 作为第二个参数传递给json_decode() 如果他需要一些特定的数组键,那么上面的解决方案更好...... 他将密钥 datecreated 更改为 date_created。 很公平,但是您的“Rreplace ... with ...”仍然是错误的方法。 :) 对不起兄弟...如果可能,请编辑答案..谢谢【参考方案2】:

您正在更新整个数组,您需要向数组中添加一个项目,因此您将需要[]。改变

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

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

【讨论】:

【参考方案3】:

改变这个

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

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

【讨论】:

以上是关于将对象数据插入数组PHP [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将对象插入核心数据实体时处理重复项

将PHP数组中的唯一值插入SQL表[重复]

Vue-重复插入数组对象

将元素插入数组中间[重复]

PHP错误:不能将stdClass类型的对象用作数组(数组和对象问题)[重复]

使用 Php 将对象更改为数组 [重复]