<?
$str=array("aa"=>"a",1=>"b");
function   arr2obj($arg_array)   { 
$tmp   =   new   stdClass;   //   start   off   a   new   (empty)   object 
foreach   ($arg_array   as   $key   =>   $value)   { 
if   (is_array($value))   {   //   if   its   multi-dimentional,   keep   going   :) 
$tmp-> $key   =   arr2obj($value); 
}   else   { 
if   (is_numeric($key))   {  
$tt="num".$key;//   can't   do   it   with   numbers   :( 
  $tmp->$tt  =   $value; 
  continue;

$tmp-> $key   =   $value; 


return   $tmp;   //   return   the   object! 

$str=arr2obj($str);
var_dump($str);
?>

解决方案 »

  1.   

    首先属性不能是以数字命名的.
    就像变量不可以用纯数字一样.
    单纯这样转换的话.下面的句子就可以实现.
    <?php
    $array =array('name'=>'gaga','sex' =>'mu');
    settype($array,'object'); # or  $array = (object)$array;
    //print_r($array); #stdClass Object ( [name] => gaga [sex] => mu ) 
    echo $array->name; #gaga
    ?>