文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>闲着无聊。。array2xml

闲着无聊。。array2xml

时间:2011-01-04  来源:es_liu

    <?php
    /*********************************************************
     * class name :array2xml.class.php
     * author:liuensong
     * creating time:2011-01-05
     * instructions:
     *     $arr2xml = new array2xml();
     *     $arr2xml->f_field = 'parent_id';//必须设置的父id字段名称
     *     $arr2xml->id_field = 'id';//必须设置id列名称,一般都是ID列
     *     $arr2xml->re_field = 'caption';//要输出的列字段名称
     *     $arr2xml->caption = '部门树结构';//设置最高层节点
     *     $arr2xml->pg_connect('localhost', 'postgres', '123456', 'juren_info');//连接数据库
     *     $query = "SELECT
     *                     depts.id AS id,
     *                     depts.caption AS caption,
     *                     depts.parent_id AS parent_id
     *                 FROM
     *                     public.depts";
     *     $arr = $arr2xml->pg_query($query);
     *     //    echo '<pre>';
     *     //    print_r($arr);
     *     $xml = $arr2xml->return_xml($arr);//数组$arr中必须有id,父id字段
     *     echo $xml;
     ************************************************************/
    class array2xml{
        var $arr = array();//需要转换的一维数组
        var $f_id = '';//父ID
        var $xml = '';//返回的xml文件
        var $host = '';//要连接的服务器
        var $dbuser = '';//数据库用户名
        var $dbpass = '';//数据库密码
        var $dbname = '';//要连接的数据库名称
        var $db = '';
        var $result = '';
        
        var $f_field = '';//父id字段名称
        var $id_field = '';//id名称
        var $re_field = '';//要输出的字段名称
        var $caption = '';
        /*****************************
         * 连接数据库
         * return: 连接标识符
         ****************************/
        public function pg_connect($host,$dbuser,$dbpass,$dbname){
            $db = pg_connect("host=$host dbname=$dbname user=$dbuser password=$dbpass");
                //or die('Could not connect: ' . pg_last_error());
            if ($db){
                return false;
            }else{
                $this->db = $db;
            }
        }
        
        /****************************
         * 执行SQL查询,返回数组
         * $query: sql语句
         * return: array
         ****************************/
        public function pg_query($query){
            // 执行 SQL 查询
            //$result = pg_query($query) or die('Query failed: ' . pg_last_error());
            $this->result = $result = pg_query($query) or die('Query Error!');
            while (FALSE != ($row = pg_fetch_assoc($result))){
                //$arr[] = array($row['id'],$row['parent_id'],$row['caption']);
                $arr[] = $row;
            };
            return $arr;
        }
        
        /***************************
         * 释放结果集
         ***************************/
        public function pg_result(){
            $result = $this->result;
            pg_free_result($result);
        }
        
        /**************************
         * 关闭数据库连接
         **************************/
        public function pg_close(){
            $link = $this->db;
            pg_close($link);
        }
        
        
        /****************************
         * parameter:$arr array
         * return: xml file
         ****************************/
        public function return_xml($arr){
            if($this->f_field !='' && $this->id_field !=''){
                $xml  = '<?xml version="1.0" encoding="UTF-8" ?>';
                $xml .= '<tree id="0">';
                $xml .= $this->array_xml($arr,$this->f_field,$this->id_field,$this->re_field);
                 $xml .= '</tree>';
                 return $xml;
            }else{
                exit('先设置父id和id列字段名称');
            }
        }
        
        /****************************
         * return: xml file
         ****************************/
        public function array_xml($arr,$f_field,$id_field,$re_field,$f_id=1){
            
             $count = count($arr);
             $xml .= '<item id="'.$f_id.'" text = "'.$this->caption.'">';
             for($i=0;$i<$count;$i++){
                    if($arr[$i][$f_field]==$f_id){
                        $this->caption = $arr[$i][$re_field];
                         $xml .= $this->array_xml($arr,$this->f_field,$this->id_field,$this->re_field,$arr[$i][$id_field]);
                     }  
              }
              $xml .= '</item>';
              return $xml;
        }
        
    }
    
//////////////////////////////////////////////////////////////////
    
//    $arr2xml = new array2xml();
//    
//    $arr2xml->f_field = 'parent_id';
//    $arr2xml->id_field = 'id';
//    $arr2xml->re_field = 'caption';
//    $arr2xml->caption = '部门树结构';
//    
//    $arr2xml->pg_connect('localhost', 'postgres', '123456', 'juren_info');//连接数据库
//    $query = "SELECT
//                  depts.id AS id,
//                  depts.caption AS caption,  
//                  depts.parent_id AS parent_id
//                FROM
//                  public.depts";
//    
//    $arr = $arr2xml->pg_query($query);
//    
//    echo '<pre>';
//    print_r($arr);
    
    /*
     * 数组格式
     $arr = Array
        (
        [0] => Array
            (
                [id] => 377
                [caption] => 清河小营英语组
                [parent_id] => 253
            )
    
        [1] => Array
            (
                [id] => 378
                [caption] => 清河小营文体组
                [parent_id] => 253
            )
    
        [2] => Array
            (
                [id] => 379
                [caption] => 清河小营教务组
                [parent_id] => 253
            )
    
        [3] => Array
            (
                [id] => 389
                [caption] => 客户服务中心
                [parent_id] => 1
            )
    
        [4] => Array
            (
                [id] => 399
                [caption] => 西安分校
                [parent_id] => 392
            )
         .....
     */
    //$xml = $arr2xml->return_xml($arr);
    
    //echo $xml;
?>
相关阅读 更多 +
排行榜 更多 +
XLM币最具爆发力的安全交易所币安binance下载

XLM币最具爆发力的安全交易所币安binance下载

金融理财 下载
XEM币最安全隐私链的全球交易所币安binance下载

XEM币最安全隐私链的全球交易所币安binance下载

金融理财 下载
WAVES币最新上线的优质交易所币安binance下载

WAVES币最新上线的优质交易所币安binance下载

金融理财 下载