开发者

Adding array to an object breaks the array

开发者 https://www.devze.com 2022-12-30 02:39 出处:网络
I have an array like this (output from print_r): Array ( [price] => 700.00 [room_prices] => Array ( [0] =>

I have an array like this (output from print_r):

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

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

I'm running a custom function to convert it to an object. Only the top-level should be converted, the sub-arrays should stay as arrays. The output comes out like this:

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

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

Here is my conve开发者_运维问答rsion function. All it does is set the value of each array member to an object:

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

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

    return $obj;
}

I can't figure this out for the life of me!


why don't you just cast the array to an object?

$myObj = (object) $myArray;


I can't reproduce (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));

gives

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

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

)
0

精彩评论

暂无评论...
验证码 换一张
取 消