<?php
/**
 * Description of ArrayIconv
 *
 * @author user
 */
class ArrayIconv {
    static protected $in;
    static protected $out;

    /**
      * 静态方法,该方法输入数组并返回数组
      *
      * @param unknown_type $array 输入的数组
      * @param unknown_type $in 输入数组的编码
      * @param unknown_type $out 返回数组的编码
      * @return unknown 返回的数组
      */
    static public function Conversion($array, $in, $out)
    {
        self::$in = $in;
        self::$out = $out;
        return self::arraymyicov($array);
    }

    /**
      * 内部方法,循环数组
      *
      * @param unknown_type $array
      * @return unknown
      */
    static private function arraymyicov($array)
    {
        if (!is_array($array)) {return self::myiconv($array);}
        if (count($array) == 0) {return $array;}
        foreach ($array as $key=>$value)
        {
            $key=self::myiconv($key);
            if (!is_object($value)) {
                $value = !is_array($value) ? self::myiconv($value)
                                           : self::arraymyicov($value);
            } 
            $temparray[$key]=$value;
        }
        return $temparray;
    }

    /**
      * 替换数组编码
      *
      * @param unknown_type $str
      * @return unknown
      */
    static private function myiconv($str)
    {
        return iconv(self::$in, self::$out . '//IGNORE', $str);
    }

    /**
      * 判断字符的类型
      *
      * @param unknown_type $str
      * @return unknown
     */
    static function gbkStrCheck($str){  
        $mb = mb_strlen($str,'gbk');  
        $st = strlen($str);  
        if($st==$mb){
            //'纯英文'
            return 1;  
        }
        if($st%$mb==0 && $st%2==0){
            //'纯汉字'
            return 2; 
        }
        //'汉英混合'
        return 3;  
    }

    /**
      * 重新整理数组（去除二维数组中索引为数字的数值对）
      * @param unknown_type $str
      * @return unknown
     */
    static function getInitArray($arr){  
        if(is_array($arr) && !empty($arr)){
            foreach($arr as $key1=>$val1){
                if(!is_array($val1) || empty($val1))  continue;
                foreach($val1 as $key2=>$val2){
                    if($key2 === intval($key2)){
                        unset($arr[$key1][$key2]);
                    }
                }
            }
        }
        return $arr;
    } 
}
