zoukankan      html  css  js  c++  java
  • PHP接口数据的封装XML和JSON(转)

    原博主的代码有误无法使用,本人调试修改后可以使用。

    <?php
    //定义生成接口数据类
    class Api
    {
        /*
         * 生成json数据格式
         * @param integer $code 状态码
         * @param string $message 提示信息
         * $param array $data 数据
         * return string
         */
         public static function json($code, $message = '', $data = array())
         {
             //如果状态码不是数字就返回空
             if(!is_numeric($code)) {
                 return '';
             }
             //构造返回数据
             $result = array(
                 'code' => $code,
                 'message' => $message,
                 'data' => $data
             );
             return json_encode($result);
         }
    
        /*
         * 生成xml数据格式
         * @param integer $code 状态码
         * @param string $message 提示信息
         * @param array $data 数据
         * return string
         */
         public static function xml($code, $message = '', $data = array())
         {
             if(!is_numeric($code)) {
                 return '';
             }
             $result = array(
                 'code' => $code,
                 'message' => $message,
                 'data' => $data
             );
             //构造xml数据
             //使返回的数据以xml格式显示
             header("Content-Type:text/xml");
             //开始拼xml数据
             $xml = "<?xml version='1.0' encoding='UTF-8'?>";
             //根节点
             $xml .= "<root>";
             //创建一个额外函数来构造
             $xml .= self::xmlToEncode($result);
             $xml .= "</root>";
             return $xml;
         }
         //构造xml数据函数
         public static function xmlToEncode($data)
         {
             $xml = "";
             $attr = "";
             foreach($data as $key => $value)
             {
                 //如果传递的数组是没有键值的话,<0>,<1>这种类型的节点是不合法的,所有就要判断了,如果是数字就这样<item id='0'>显示
                 if(is_numeric($key)) {
                     $attr = "id = '{$key}'";
                     $key = "item ";
                 }
                 //如果是数字就加上$attr
                 $xml .= "<{$key}{$attr}>";
                 //如果value是数组就进行递归
                 $xml .= is_array($value) ? self::xmlToEncode($value) : $value;
                 $xml .= "</{$key}>";
             }
             return $xml;
         }
    }
    //下面就来测试一下吧
    $data = array(
        'id' => 1,
        'name' => 'zjp',
        'content' => array(
            'sex' => '男',
            'age' => '24',
            'num' => array(1,3,5,7,9)
        )
    );
    //$xml = Api::xml(200, "返回数据成功", $data);
    echo Api::xml(200, "返回数据成功", $data);
    //xmlToEncode($data);
    //$json = Api::json(200, "返回数据成功", $data);
    ?>

     运行结果

    原文链接:http://blog.csdn.net/sinat_21125451/article/details/51353615

  • 相关阅读:
    一、cocos2d-x 3.0 final使用httpclient编译到android,须要用到的android.mk
    lvchange的available參数
    基于谱减法的声音去噪
    ios使用openUrl进行应用跳转
    linux下ssh免密登陆
    字体图标 icon font
    hdu 3642 Get The Treasury(扫描线)
    3D游戏引擎一 win32编程
    Codeforces 112B-Petya and Square(实现)
    动态规划 is beginning。。。。。。。。。
  • 原文地址:https://www.cnblogs.com/CryOnMyShoulder/p/8376281.html
Copyright © 2011-2022 走看看