PHP 5.2 及以上版本提供了 json_encode 和 json_decode 函数,相当好用。
而之前的版本则需要下载网友们自行开发的库(有兴趣的可以看下 http://code.itlearner.com/php/JSON-class.html )
可以参考如下这个方法来在低版本上扩充这两个函数:
if (!function_exists('json_encode') && !function_exists('json_decode')) {
require_once ROOT . 'include/json.class.php';
$g_service_json = new Services_JSON;
function json_encode($arr) {
global $g_service_json;
return $g_service_json->encode($arr);
}
function json_decode($arr) {
global $g_service_json;
return $g_service_json->decode($arr);
}
}
如此一来,你也可以在低版本的 PHP 上使用 json_encode 和 json_decode 函数了。
而对于 xml 的输出,当然可以使用 xml 的库,然而日常开发中,轻量级的使用 xml 输出其实并不需要太过复杂的功能。
因此我写了一个更简单的 ajax_encode 函数,有兴趣的兄弟可以参考下:
/**
* Description:
* A simple function for outputing XML
* History:
* Created by Moky @ 2009-11-26
*/
/**
Usage:
$xml = '<?xml version="1.0" encoding="utf-8" ?>' . "\r\n";
$xml .= ajax_encode($data, 'data');
*/
function ajax_encode($var, $name = 'data') {
if (!$var && !is_numeric($var) && is_bool($var)) return "\r\n";
$xml = '';
if (is_array($var)) {
foreach ($var as $k => $v) {
if (is_numeric($k)) $k = 'item';
$xml .= self::ajax_encode($v, $k);
}
} else if (is_string($var)) {
$xml .= "";
} else {
$xml .= $var;
}
return "$xml$name>\r\n";
}