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' => 'us...@email.com' ), 1 => array( '_explicitType' => 'as.class.user.as', 'username' => 'user2', 'email' => 'us...@email.com' ), 2 => array( '_explicitType' => 'as.class.user.as', 'username' => 'user3', 'email' => 'us...@email.com' ) ) ); $obj = array2Obj($array); echo '<pre>'; print_r($obj); echo '</pre>'; On Fri, Feb 6, 2009 at 11:24 AM, A.J. Brown <a...@ajbrown.org> 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 >