PHP5.2.0之前版本使用JSON函数的方法
我们知道PHP在其版本5.2.0之后才支持 JSON相关函数,在此版本之前如果我们要使用JSON函数则需要自己实现
JSON的算法已经有人实现了,其下载地址为:http://pear.php.net/pepr/pepr-proposal-show.php?id=198
但是它是一个类这与我们的使用习惯不同,于是我们需要将它包装下,其代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | /** * 对象转换成数组 递归函数 * @param <type> $value 需要转换的值 * @return <type> */ function object2array($value) { if (!(is_array($value) || is_object($value))) { return $value; } $array = array(); foreach ($value as $key => $row) { $array[$key] = object2array($row); } return $array; } /** * 替换JSON方法 */ if (!function_exists("json_encode")) { include_once("JSON.php"); function json_encode($array) { $json = new Services_JSON(); $json_array = $json->encode($array); return $json_array; } /** * 解析JSON数据 * @param string $json_data 需要解析的JSON数据 * @param bool $toarray 是否需要解析成数组 * @return array 返回解析后的数组 */ function json_decode($json_data, $toarray = TRUE) { $json = new Services_JSON(); $array = $json->decode($json_data); if ($toarray) { // 需要转换成数组 $array = object2array($array); } return $array; } } |
不过以上的递归实现在效率上有一些慢,它需要遍历这个数组的所有元素,
如果只限于实现二维数组,可以考虑直接使用循环+类型强制转化来做
【EOF】
直接装pecl吧,centos的话,安装epel之后yum install php-pecl-json即可