function array2Obj($array, $obj = null)
{
if (is_null($obj))
{
$obj = new stdClass();
}
foreach ($array as $key => $value)
{
if (is_scalar($value))
{
$obj->$key = $value;
} else if (is_array($value)) {
if (isset($value[0]))
{
$obj->$key = new stdClass();
foreach ($value as $k => $v)
{
$obj->$key->$k = array2Obj($v);
}
} else {
$obj->$key = array2Obj($value);
}
}
}
return $obj;
}
$array = array(
'username' => 'jteam',
'password' => 'changeme',
'_explicitType' => 'as.class.user.as',
'Phonenumbers' => array(
0 => array(
'_explicitType' => 'as.class.phone.as',
'phonenumber' => '615-513-9185'
),
1 => array(
'_explicitType' => 'as.class.phone.as',
'phonenumber' => '615-313-7679'
)
),
'Profile' => array(
'_explicitType' => 'as.class.profile.as',
'first_name' => 'Josh',
'last_name' => 'Team',
),
'Friends' => array(
0 => array(
'_explicitType' => 'as.class.user.as',
'username' => 'user1',
'email' => '[email protected]'
),
1 => array(
'_explicitType' => 'as.class.user.as',
'username' => 'user2',
'email' => '[email protected]'
),
2 => array(
'_explicitType' => 'as.class.user.as',
'username' => 'user3',
'email' => '[email protected]'
)
)
);
$obj = array2Obj($array);
echo '<pre>';
print_r($obj);
echo '</pre>';
On Fri, Feb 6, 2009 at 11:24 AM, A.J. Brown <[email protected]> wrote:
> Hey guys,
>
> This is probably more approriate for the PHP list, but I'm not subscribed
> with this email address, so I'll pose it here.
>
> Is there a better / built in way to turn an array into a stdClass?
>
> //TODO (is there / why isn't there) a built in way to do this?
> $oTrack = new stdClass();
> foreach( $trackData as $key => $value ) {
> $oTrack->$key = $value;
> }
>
>
> I'm doing this because the user has the option of passing in either a model
> (an object type), or an array of the data that would be in the model. But,
> I don't want to have two different code paths for processing the data.
>
> --
> A.J. Brown
> web | http://ajbrown.org
> phone | (937) 660-3969
>