$code, 'message' => $message, 'data' => $data, ); switch (strtolower($type)) { case 'json': //如果是json,则返回json数据 self::json($code,$message,$data); break; case 'xml': //如果是xml,这返回xml数据 self::xml($code,$message,$data); break; case 'array': //如果传进来的值是array,这打印出这个数组 header('Content-Type:text/html; charset=utf-8'); var_dump($result); break; default: #根据需要,处理业务逻辑 echo '不能识别信息'; break; } } /** * 按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 ); header('Content-Type:application/json; charset=utf-8'); echo self::convertArrayToJson($result); exit; } /************************************************************** * * 使用特定function对数组中所有元素做处理 * @param string &$array 要处理的字符串 * @param string $function 要执行的函数 * @return boolean $apply_to_keys_also 是否也应用到key上 * @access public * *************************************************************/ public static function arrayRecursive(&$array, $function, $apply_to_keys_also = false) { static $recursive_counter = 0; if (++$recursive_counter > 1000) { die('possible deep recursion attack'); } foreach ($array as $key => $value) { if (is_array($value)) { self::arrayRecursive($array[$key], $function, $apply_to_keys_also); } else { $array[$key] = $function($value); } if ($apply_to_keys_also && is_string($key)) { $new_key = $function($key); if ($new_key != $key) { $array[$new_key] = $array[$key]; unset($array[$key]); } } } $recursive_counter--; } /** * 转换数组为JSON格式 * @param 数组:$arr */ public static function convertArrayToJson($arr) { self::arrayRecursive($arr, 'urlencode', true); $json = json_encode($arr); return urldecode($json); } /** * 按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, ); header("Content-Type:text/xml"); $xml = " \n"; $xml .= "\n"; $xml .= self::xmlToEncode($result); $xml .= " "; echo $xml; } public static function xmlToEncode($data) { //准备一个接收的空数组 $xml = $attr = ""; //将这个数组的键,作为节点名称,值作为内容 foreach($data as $key => $value) { /*约定一个规则,如果键是数字的话,格式为- aaa*/ if(is_numeric($key)) { $attr = " id='{$key}'";//属性的值需要带上引号,不然报错 $key = "item"; } $xml .= "<{$key}{$attr}>"; //如果$value的值是个多维数组的话,需要递归遍历 $xml .= is_array($value) ? self::xmlToEncode($value) : $value; $xml .= " \n"; } return $xml; }}$arr=array( 'name'=>'学PHP的小蚂蚁 改进版---wh', 'age'=>'24', 'sex'=>'male', 'url'=>'原博客 http://my.oschina.net/woshixiaomayi/blog', 'like'=>array( 'eat'=>'apple', 'drink'=>'milk', 'happy', 'lucky' ));//Response::json(200,"success",$arr);//Response::xml(200,'success',$arr);// Response::show(200,'success',$arr,'xml');// Response::show(200,'success',$arr,'array');Response::show(200,'success',$arr);