Adding array to an object breaks the array
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
)
)
精彩评论