Bir nesneye dizi ekleme dizi tatili

2 Cevap php

Ben bu (print_r çıktısı) gibi bir dizi var:

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

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

Ben bir nesneye dönüştürmek için özel bir işlev koşuyorum. Sadece üst düzey dönüştürülmesi gerekir, alt diziler diziler olarak kalmalıdır. Çıktı böyle çıkıyor:

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

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

İşte benim dönüştürme işlevidir. Bütün bir nesneye her dizi üyesinin değerini ayarlanır yapar:

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

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

    return $obj;
}

Ben bana yaşam için bu anlamaya olamaz!

2 Cevap

Ben (PHP 5.3) yeniden olamaz:

$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));

verir

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

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

)

neden olmasın sadece cast the array to an object?

$myObj = (object) $myArray;