原博主的代码有误无法使用,本人调试修改后可以使用。
<?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