public function array_iconv($in_charset,$out_charset,$arr){
return eval('return '.iconv($in_charset,$out_charset,var_export($arr,true).';'));
}
我在转码的时候出现这个问题
Fatal error: Call to undefined method stdClass::__set_state() in D:\soft\apache\htdocs\webtest\arrayiconv.func.php(5) : eval()'d code on line 1

解决方案 »

  1.   

    return 之前var_dump一下$arr,看看是什么类型
      

  2.   

    你的 $arr 是什么类型? 数组吗? var_dump($arr); 看看
      

  3.   

    object(stdClass)#7 (10) {
      ["countTestQuesOptionsBean"]=>
      NULL
      ["isMultiPart"]=>
      int(0)
      ["multiFlag"]=>
      string(0) ""
      ["multiFlagName"]=>
      string(0) ""
      ["quesId"]=>
      int(1245)
      ["quesImage"]=>
      NULL
      ["quesSortId"]=>
      NULL
      ["quesTitle"]=>
      string(12) "对未来很悲观"
      ["quesType"]=>
      NULL
      ["testId"]=>
      int(89)
    }
      

  4.   

    测试了一下  $arr是stdClass的时候会出现楼主的错误,是array的时候正常
      

  5.   

    array(5) {
      [0]=>
      object(stdClass)#8 (6) {
        ["optionContent"]=>
        string(4) "没有"
        ["optionId"]=>
        int(4137)
        ["optionImage"]=>
        NULL
        ["optionScore"]=>
        int(0)
        ["optionSortId"]=>
        string(1) "A"
        ["quesId"]=>
        int(1245)
      }
      [1]=>
      object(stdClass)#9 (6) {
        ["optionContent"]=>
        string(8) "几乎没有"
        ["optionId"]=>
        int(4138)
        ["optionImage"]=>
        NULL
        ["optionScore"]=>
        int(1)
        ["optionSortId"]=>
        string(1) "B"
        ["quesId"]=>
        int(1245)
      }
      [2]=>
      object(stdClass)#10 (6) {
        ["optionContent"]=>
        string(4) "有时"
        ["optionId"]=>
        int(4139)
        ["optionImage"]=>
        NULL
        ["optionScore"]=>
        int(2)
        ["optionSortId"]=>
        string(1) "C"
        ["quesId"]=>
        int(1245)
      }
      [3]=>
      object(stdClass)#11 (6) {
        ["optionContent"]=>
        string(4) "经常"
        ["optionId"]=>
        int(4140)
        ["optionImage"]=>
        NULL
        ["optionScore"]=>
        int(3)
        ["optionSortId"]=>
        string(1) "D"
        ["quesId"]=>
        int(1245)
      }
      [4]=>
      object(stdClass)#12 (6) {
        ["optionContent"]=>
        string(4) "总是"
        ["optionId"]=>
        int(4136)
        ["optionImage"]=>
        NULL
        ["optionScore"]=>
        int(4)
        ["optionSortId"]=>
        string(1) "E"
        ["quesId"]=>
        int(1245)
      }
    }
      

  6.   

    明显是个stdClass嘛  哪是数组了
      

  7.   

    不好意思,我没有转化,我强制转化了之后下面的为null了array(5) {
      [0]=>
      object(stdClass)#8 (6) {
      ["optionContent"]=>
      string(4) "没有"
      ["optionId"]=>
      int(4137)
      ["optionImage"]=>
      NULL
      ["optionScore"]=>
      int(0)
      ["optionSortId"]=>
      string(1) "A"
      ["quesId"]=>
      int(1245)
      }
      [1]=>
      object(stdClass)#9 (6) {
      ["optionContent"]=>
      string(8) "几乎没有"
      ["optionId"]=>
      int(4138)
      ["optionImage"]=>
      NULL
      ["optionScore"]=>
      int(1)
      ["optionSortId"]=>
      string(1) "B"
      ["quesId"]=>
      int(1245)
      }
      [2]=>
      object(stdClass)#10 (6) {
      ["optionContent"]=>
      string(4) "有时"
      ["optionId"]=>
      int(4139)
      ["optionImage"]=>
      NULL
      ["optionScore"]=>
      int(2)
      ["optionSortId"]=>
      string(1) "C"
      ["quesId"]=>
      int(1245)
      }
      [3]=>
      object(stdClass)#11 (6) {
      ["optionContent"]=>
      string(4) "经常"
      ["optionId"]=>
      int(4140)
      ["optionImage"]=>
      NULL
      ["optionScore"]=>
      int(3)
      ["optionSortId"]=>
      string(1) "D"
      ["quesId"]=>
      int(1245)
      }
      [4]=>
      object(stdClass)#12 (6) {
      ["optionContent"]=>
      string(4) "总是"
      ["optionId"]=>
      int(4136)
      ["optionImage"]=>
      NULL
      ["optionScore"]=>
      int(4)
      ["optionSortId"]=>
      string(1) "E"
      ["quesId"]=>
      int(1245)
      }
      

  8.   

    手册中有:_set_state()static object __set_state ( array $properties )
    当调用var_export()时,这个静态 方法会被调用(自PHP 5.1.0起有效)。本方法的唯一参数是一个数组,其中包含按array('property' => value, ...)格式排列的类属性。Example #4 使用 __set_state()> (PHP 5.1.0及更高版本支持)
    <?phpclass A
    {
        public $var1;
        public $var2;    public static function __set_state($an_array) // As of PHP 5.1.0
        {
            $obj = new A;
            $obj->var1 = $an_array['var1'];
            $obj->var2 = $an_array['var2'];
            return $obj;
        }
    }$a = new A;
    $a->var1 = 5;
    $a->var2 = 'foo';eval('$b = ' . var_export($a, true) . ';'); // $b = A::__set_state(array(
                                                //    'var1' => 5,
                                                //    'var2' => 'foo',
                                                // ));
    var_dump($b);?>
    以上例程会输出:
    object(A)#2 (2) {
      ["var1"]=>
      int(5)
      ["var2"]=>
      string(3) "foo"
    }