【发布时间】:2019-05-23 07:25:56
【问题描述】:
我正在循环一些数据并动态创建一个我想推入数组的对象。
$messageObj = new stdClass(); $recipientsObj = new stdClass();
$messageObj->message_recipients = Array();
$size = count($results);
for( $j = 0; $j < $size; $j++ ) {
$recipientsObj->recipient_name = $results[$j]['recipient_name'];
$recipientsObj->phone_number = $results[$j]['phone_number'];
var_dump(json_encode($recipientsObj)); // DUMP 1
array_push($messageObj->message_recipients, clone $recipientsObj);
var_dump($messageObj->message_recipients); // DUMP 2
}
问题
// DUMP 1 输出预期的数据——例如
string(55) "{"recipient_name":"JOHN DOE","phone_number":"123456789"}"
但是当我将对象推入数组时,对象被作为数组推入,所以我得到:
[ [{...}], [{...}], [{...}] ] // DUMP 2
而不是
[ {...}, {...}, {...} ]
这可能是什么原因造成的?我推错了吗?
【问题讨论】:
-
嗨克林特,我没有看到这种行为:3v4l.org/YN073
-
在循环内使用
$recipientsObj = new stdClass();可能会更好(作为循环范围内的本地变量 -
@Nick 你是对的 - 我刚刚将错误追踪到代码的另一部分,我正在执行
array_chunk导致问题中的问题。
标签: php arrays stdclass array-push