获取数据库指定的表的columns列信息

jerry thinkphp 2015年11月18日 收藏
若未指定属性(第二个参数),则只返回列名的一维索引数组。
若指定第二个参数,则返回一个2维关联数组,其中key是列名,value是属性=》属性值的第二维数组。
    /**
     * 读取一个表的列信息
     * @author 吾爱 qq296624314
     * @param string $tableName 表名
     * @param array $option 需要获取的属性
     * @return array 返回的一个数组,若指定属性,则以 array("列名1"=>array("属性名1"=>"属性1值"……)……)的格式返回,否则以 array("列名1","列名2"……)的格式返回
     * @example 
     */
    function  getcolumns($tableName,$option=array()){
        $m=M();
        $columns=array();
        $m_re=$m->query("show columns from `{$tableName}`");
        if(!$m_re){
            return array();
        }
        foreach($m_re as $v){
            $v=array_change_key_case($v);
            if(empty($option)){
                $columns[]=$v["field"];
            }else{
                $vv=array();
                foreach($option as $op){
                    $op=strtolower($op);
                    if(array_key_exists($op,$v)){
                        $vv[$op]=$v[$op];
                    }
                }
                $columns[$v["field"]]=$vv;
            }
        }
        return $columns;
    }

//用法
dump(getcolumns("ggw",array("key","type")));