将两个对象合并为一个数组

时间:2019-01-13 17:55:25

标签: php oop

我正在尝试将两个对象放入一个数组中以进行循环。

    $arr = array();
    while ($data = $d->fetch()) {
        $a = new aEntity();
        $b = new bEntity();
        $a->setData1($data['data1']);
        $b->setData2($data['data2']);
        $arr[] = (object) array_merge((array) $a, (array) $b);
    }
    return $arr;

如何将$a$b的值放入$arr[]中?

使用array_merge()会引发以下错误:

  

致命错误:允许的内存大小为134217728字节已用尽(尝试分配28672字节)

谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

我发现将对象转换为数组的最简单方法是先将对象编码为JSON,然后使用数组标志对其进行解码。 (请参见json_decode()

$new_array = array();
if (is_array($arr) || is_object($arr)) {
    foreach($arr as $d) {
        $d = json_encode($d); //this will convert an object OR an array to JSON
        $d = json_decode($d,TRUE); 
        //the TRUE flag will convert JSON to an array rather than an object
        $new_array = array_merge($d,$new_array);
        //merges array $d into $new_array
    }
}

$new_array将是一个包含两个对象的元素的数组。