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
>

Reply via email to