Как можно вручную преобразовать объект в массив без использования функции json_decode ($ object, true)? - PullRequest
0 голосов
/ 30 сентября 2019

По какой-то причине функция json_decode($a) отлично работает в моей работе, но не тогда, когда она имеет истинный параметр json_decode($a, true), который позволяет мне преобразовывать объект в массив. Поэтому я спрашиваю, как я могу преобразовать следующий объект в нечто подобное вручную.

stdClass Object
(
    [23] => stdClass Object
        (
            [1] => stdClass Object
                (
                    [idTempHorario] => 2306
                    [idEmpleado] => 23
                )

            [2] => stdClass Object
                (
                    [idTempHorario] => 2307
                    [idEmpleado] => 23
                )

        )

    [2123] => stdClass Object
        (
            [1] => stdClass Object
                (
                    [idTempHorario] => 2292
                    [idEmpleado] => 2123
                )

            [2] => stdClass Object
                (
                    [idTempHorario] => 2293
                    [idEmpleado] => 2123
                )


        )

)

В что-то вроде этого:

Array
(
    [23] => Array
        (
            [1] => Array
                (
                    [idTempHorario] => 2306
                    [idEmpleado] => 23
                )

            [2] => Array
                (
                    [idTempHorario] => 2307
                    [idEmpleado] => 23
                )

        )

    [2123] => Array
        (
            [1] => Array
                (
                    [idTempHorario] => 2292
                    [idEmpleado] => 2123
                )

            [2] => Array
                (
                    [idTempHorario] => 2293
                    [idEmpleado] => 2123
                )

        )

)

1 Ответ

1 голос
/ 30 сентября 2019

Я не понимаю, почему json_decode($o, true) не будет работать для вас. Однако другой способ выполнить преобразование - использовать рекурсивную функцию, подобную этой, которая приводит объект и его дочерние элементы к массивам:

function convert($obj) {
    $arr = (array)$obj;
    foreach ($arr as &$v) {
        if (is_object($v)) $v = convert($v);
    }
    return $arr;
}

Демонстрация на 3v4l.org

Обратите внимание, что демо также включает в себя пример json_decode, дающий точно такой же результат ...

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