数据转换js格式的数据是我们常用一种数据传递的方法,特别像ajax中会时常用到把数据转换成json然后再转换回来,下面看一个实例,代码如下:
functionarray_to_json($array) {
if(!is_array($array)) {
returnfalse;
}
$associative=count(array_diff(array_keys($array),array_keys(array_keys($array) ) ) );
if($associative) {
$construct=array();
foreach($arrayas$key=>$value) {
// We first copy each key/value pair into a staging array,
// formatting each key and value properly as we go.
// Format the key:
if(is_numeric($key)) {
$key="key_$key";
}
$key=""" . addslashes ( $key ) . """;
// Format the value:
if(is_array($value)) {
$value= array_to_json ($value);
} elseif(!is_numeric($value) ||is_string($value)) {
$value=""" . addslashes ( $value ) . """;
}
// Add to staging array:
$construct[] ="$key: $value";
}
// Then we collapse the staging array into the JSON form:
$result="{". implode (",",$construct) ."}";
} else{// If the array is a vector (not associative):
$construct=array();
foreach($arrayas$value) {
// Format the value:
if(is_array($value)) {
$value= array_to_json ($value);
} elseif(!is_numeric($value) ||is_string($value)) {
$value=""" . addslashes ( $value ) . """;
}//开源软件:phpfensi.com
// Add to staging array:
$construct[] =$value;
}
// Then we collapse the staging array into the JSON form:
$result="[". implode (", ",$construct) ."]";
}
return$result;
}
你可以试试这个,然后json_encode换成上面的函数看看正常了吗,代码如下:
if($_GET['enews']=='ok'){
echojson_encode(array('a'=>'王进'));exit;
}
?>
$(function(){
$.get("?enews=ok",function(result){
alert(result);
});
});
关于php中json_encode
json_encode()将PHP的不同类型的变量转换为对应的JSON字符串 string json_encode(mixed $value [,int $options = 0])
PHP 5.3.0
JSON_HEX_QUOT:将所有的双引号(”)转换为u0022,实例代码如下:
$data='"';
echojson_encode($data);// """
echojson_encode($data, JSON_HEX_QUOT);
// "u0022"
JSON_HEX_TAG:将所有的大于号(>)转换为u003E,将所有的小于号(
JSON_HEX_AMP:将所有的与号(&)转换为 u0026。
JSON_HEX_APOS:将所有的单引号(’)转换为u0027。
JSON_FORCE_OBJECT:当value为非关联数组时强制输出结果为JSON对象。在接收者要求数据为对象且value为空数组时
使用,实例代码如下:
$data=array();
echojson_encode($data);// []
echojson_encode($data, JSON_FORCE_OBJECT);// {}
PHP 5.3.3
JSON_NUMERIC_CHECK: Encodes numeric strings asnumbers.
PHP 5.4.0
JSON_BIGINT_AS_STRING: Encodes large integers astheir original string value. Available since PHP
5.4.0.//开源软件:phpfensi.com
JSON_PRETTY_PRINT: Use whitespace in returned data to format it. Available since PHP 5.4.0.
JSON_UNESCAPED_SLASHES: Don’t escape /. Available since PHP 5.4.0.
JSON_UNESCAPED_UNICODE: Encode multibyte Unicode characters literally (defaultis to escapeasuXXXX).
Available since PHP 5.4.0.