Добавление массива к объекту разбивает массив - PullRequest
1 голос
/ 14 мая 2010

У меня есть такой массив (вывод из print_r):

Array
(
    [price] => 700.00
    [room_prices] => Array
        (
            [0] => 
            [1] => 
            [2] => 
            [3] => 
            [4] => 
        )

    [bills] => Array
        (
            [0] => Gas
        )
)

Я запускаю пользовательскую функцию для преобразования ее в объект. Только верхний уровень должен быть преобразован, подмассивы должны оставаться массивами. Вывод получается так:

stdClass Object
(
    [price] => 700.00
    [room_prices] => Array
        (
            [0] => Array
        )

    [bills] => Array
        (
            [0] => Array
        )
)

Вот моя функция преобразования. Все, что он делает, это устанавливает значение каждого члена массива для объекта:

function array_to_object( $arr )
{
    $obj = new stdClass;
    if ( count($arr) == 0 )
        return $obj;

    foreach ( $arr as $k=>$v )
        $obj->$k = $v;

    return $obj;
}

Я не могу понять это для моей жизни!

Ответы [ 2 ]

4 голосов
/ 14 мая 2010

почему бы вам просто не привести массив к объекту ?

$myObj = (object) $myArray;
3 голосов
/ 14 мая 2010

Я не могу воспроизвести (PHP 5.3):

$a = array(
    "price" =>  700.00,
    "room_price" => array(NULL, NULL, NULL, NULL, NULL),
    bills => array("Gas"),
);

function array_to_object( $arr )
{
    $obj = new stdClass;
    if ( count($arr) == 0 )
        return $obj;

    foreach ( $arr as $k=>$v )
        $obj->$k = $v;

    return $obj;
}

print_r(array_to_object($a));

дает

stdClass Object
(
    [price] => 700
    [room_price] => Array
        (
            [0] =>
            [1] =>
            [2] =>
            [3] =>
            [4] =>
        )

    [bills] => Array
        (
            [0] => Gas
        )

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