Объединение двух объектов в один массив - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь поместить два объекта в один массив для циклического прохождения.

    $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 голосов
/ 13 января 2019

Я считаю, что самый простой способ преобразовать объекты в массивы - это сначала кодировать объект в 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 будет массивом, содержащим элементы обоих объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...