2010-05-14 27 views
1

我有這樣的(從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; 
} 

我無法弄清楚我的生活!

回答

3

我不能重現(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 
     ) 

) 
+0

感謝您的回覆。我檢查了功能後的輸出,並認識到功能正常工作!之後我的代碼的另一部分修改了輸出。其中一個facelap時刻。 – DisgruntledGoat 2010-05-14 16:09:48