读书人

php5.2以上版本json_encode兼容性

发布时间: 2012-09-07 10:38:15 作者: rapoo

php5.2以下版本json_encode兼容性
php5.1版本通过编译加载的json.so,在使用json_encode时会把键名为空的数组
$arr =array(''=>array('id'=>'aaa','total'=>'bbb'))转化成空;但是在php5.2中使用使用自带的此函数不存在此问题。

或者不想编译加载json.so扩展,可以使用替代函数

$jsonencode = version_compare(PHP_VERSION, '5.2.5', '>=') ? json_encode($arr) : php_json_encode($arr);echo $jsonencode;function php_json_encode($arg) {$returnValue = '';$c           = '';$i           = '';$l           = '';$s           = '';$v           = '';$numeric     = true;switch (gettype($arg)) {case 'array':foreach ($arg AS $i => $v) {if (!is_numeric($i)) {$numeric = false;break;}}if ($numeric) {foreach ($arg AS $i => $v) {if (strlen($s) > 0) {$s .= ',';}$s .= json_encode($arg[$i]);}$returnValue = '[' . $s . ']';} else {foreach ($arg AS $i => $v) {if (strlen($s) > 0) {$s .= ',';}$s .= json_encode($i) . ':' . json_encode($arg[$i]);}$returnValue = '{' . $s . '}';}break;case 'object':foreach (get_object_vars($arg) AS $i => $v) {$v = json_encode($v);if (strlen($s) > 0) {$s .= ',';}$s .= json_encode($i) . ':' . $v;}$returnValue = '{' . $s . '}';break;case 'integer':case 'double':$returnValue = is_numeric($arg) ? (string) $arg : 'null';break;case 'string':$returnValue = '"' . strtr($arg, array(    "\r"   => '\\r',    "\n"   => '\\n',    "\t"   => '\\t',     "\b"   => '\\b',    "\f"   => '\\f',    '\\'   => '\\\\',   '"'    => '\"',    "\x00" => '\u0000', "\x01" => '\u0001', "\x02" => '\u0002', "\x03" => '\u0003',    "\x04" => '\u0004', "\x05" => '\u0005', "\x06" => '\u0006', "\x07" => '\u0007',    "\x08" => '\b',     "\x0b" => '\u000b', "\x0c" => '\f',     "\x0e" => '\u000e',    "\x0f" => '\u000f', "\x10" => '\u0010', "\x11" => '\u0011', "\x12" => '\u0012',    "\x13" => '\u0013', "\x14" => '\u0014', "\x15" => '\u0015', "\x16" => '\u0016',    "\x17" => '\u0017', "\x18" => '\u0018', "\x19" => '\u0019', "\x1a" => '\u001a',    "\x1b" => '\u001b', "\x1c" => '\u001c', "\x1d" => '\u001d', "\x1e" => '\u001e',    "\x1f" => '\u001f'    )) . '"';    break;case 'boolean':$returnValue = $arg?'true':'false';break;default:$returnValue = 'null';}return $returnValue;}

读书人网 >JavaScript

热点推荐