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

来源:转载

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

 

 代码如下

复制代码

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换成上面的函数看看正常了吗

 代码如下

复制代码

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: 将所有的双引号(”)转换为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: 将所有的单引号(’)转换为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.




分享给朋友:
您可能感兴趣的文章:
随机阅读: