首页 > php数组 > PHP中数组转换成json字符串程序代码

PHP中数组转换成json字符串程序代码

数据转换js格式的数据是我们常用一种数据传递的方法,特别像ajax中会时常用到把数据转换成json然后再转换回来,下面看一个实例,代码如下:

<?php
function array_to_json($array) {
    if (!is_array($array)) {
        return false;
    }
    $associative = count(array_diff(array_keys($array) , array_keys(array_keys($array))));
    if ($associative) {
        $construct = array();
        foreach ($array as $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);
            } else if (!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 ($array as $value) {
            // Format the value:
            if (is_array($value)) {
                $value = array_to_json($value);
            } else if (!is_numeric($value) || is_string($value)) {
                $value = """ . addslashes ( $value ) . """;
            }
            // Add to staging array:
            $construct[] = $value;
        }
        // Then we collapse the staging array into the JSON form:
        $result = "[" . implode(", ", $construct) . "]";
    }
    return $result;
}

你可以试试这个,然后json_encode换成上面的函数看看正常了吗,代码如下:

<?php 
	if($_GET['enews']=='ok'){ 
	    echo json_encode(array('a'=>'王进'));exit; 
	} 
	 
	<script type="text/javascript" src="jquery.js"></script> 
	<script type="text/javascript"> 
	$(function(){ 
	    $.get("?enews=ok", function(result){ 
	    alert(result); 
	 }); 
	}); 
	</script>

关于php中json_encode

json_encode()将PHP的不同类型的变量转换为对应的JSON字符串 string json_encode(mixed $value [,int $options = 0])

PHP 5.3.0

JSON_HEX_QUOT:将所有的双引号(&rdquo;)转换为u0022,实例代码如下:

$data = '"'; 
echo json_encode($data); // """ 
echo json_encode($data, JSON_HEX_QUOT); 
// "u0022"

JSON_HEX_TAG:将所有的大于号(>)转换为u003E,将所有的小于号(<)转换为 u003C。

JSON_HEX_AMP:将所有的与号(&)转换为 u0026。

JSON_HEX_APOS:将所有的单引号(&rsquo;)转换为u0027。

JSON_FORCE_OBJECT:当value为非关联数组时强制输出结果为JSON对象。在接收者要求数据为对象且value为空数组时

使用,实例代码如下:

$data = array(); 
echo json_encode($data); // [] 
echo json_encode($data, JSON_FORCE_OBJECT); // {} 
PHP 5.3.3 
JSON_NUMERIC_CHECK: Encodes numeric strings as numbers. 
PHP 5.4.0 
JSON_BIGINT_AS_STRING: Encodes large integers as their original string value. Available since PHP  
5.4.0. 
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 (default is to escape as uXXXX). 
Available since PHP 5.4.0.

               
               

本文地址:http://www.phprm.com/shuzu/fs5573.html

转载随意,但请附上文章地址:-)

标签:php数组转换 json字符串

相关文章

发表留言