您的位置:

解决php函数json(php常用函数大全)

本文目录一览:

如何修复错误格式的JSON在PHP

用json_encode()函数对数组进行JSON编码。

?php

$arr = array ('a'=1,'b'=2,'c'=3,'d'=4,'e'=5);

echojson_encode($arr);

?

以上例程会输出:

{"a":1,"b":2,"c":3,"d":4,"e":5}[1] 

当有中文字符时,当直接使用json_encode() 函数会使汉字不能正常显示。 所以有了这个适用性比较广的函数 ch_json_encode() 来解决这个问题。

如何正确运用PHP json_encode函数进行中文转换?

在 php 中使用 json_encode() 内置函数(php 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式,但是转换后的中文会变成Unicode编码。

[php] view plaincopyprint?

?php

$arr = array

(

'Name'='希亚',

'Age'=20

);

$jsonencode = json_encode($arr);

echo $jsonencode;

?

程序运行结果如下:

[php] view plaincopyprint?

{"Name":null,"Age":20}

json_encode 函数中中文被编码成 null 了,Google 了一下,很简单,为了与前端紧密结合,Json 只支持 utf-8 编码,我认为是前端的 Javascript 也是 utf-8 的原因。

[php] view plaincopyprint?

?php

$array = array

(

'title'=iconv('gb2312','utf-8','这里是中文标题'),

'body'='abcd...'

);

echo json_encode($array);

?

这个程序的运行结果为:

[php] view plaincopyprint?

{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."}

数组中所有中文在json_encode之后都不见了或者出现\u2353等。解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecode()将编码过的中文转回来。

[php] view plaincopyprint?

?php

/**************************************************************

*

* 使用特定function对数组中所有元素做处理

* @param string $array 要处理的字符串

* @param string $function 要执行的函数

* @return boolean $apply_to_keys_also 是否也应用到key上

* @access public

*

*************************************************************/

function arrayRecursive($array, $function, $apply_to_keys_also = false)

{

static $recursive_counter = 0;

if (++$recursive_counter 1000) {

die('possible deep recursion attack');

}

foreach ($array as $key = $value) {

if (is_array($value)) {

arrayRecursive($array[$key], $function, $apply_to_keys_also);

} else {

$array[$key] = $function($value);

}

if ($apply_to_keys_also is_string($key)) {

$new_key = $function($key);

if ($new_key != $key) {

$array[$new_key] = $array[$key];

unset($array[$key]);

}

}

}

$recursive_counter--;

}

/**************************************************************

*

* 将数组转换为JSON字符串(兼容中文)

* @param array $array 要转换的数组

* @return string 转换得到的json字符串

* @access public

*

*************************************************************/

function JSON($array) {

arrayRecursive($array, 'urlencode', true);

$json = json_encode($array);

return urldecode($json);

}

$array = array

(

'Name'='希亚',

'Age'=20

);

echo JSON($array);

?

这次成功了,运行结果如下:

[php] view plaincopyprint?

{"Name":"希亚","Age":"20"}

如何在PHP中返回Json数据

概述

不对。

返回json用的json_encode()方法没错,但是需要在头部声明格式。

代码解析

php返回需要用json_encode()方法来将需要转换的字符串转换成json编码格式(注意:仅仅更换文件内容,而返回的文件依然为文本格式且编码为gtk)

所以,这里需要在php头部声明

header('Content-Type:text/json;charset=utf-8');

拓展内容

json

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

json通常被作为配置文件,常见还有.ini

如何解决php中json

json_decode()

json_decode

(PHP 5 = 5.2.0, PECL json = 1.2.0)

json_decode — 对 JSON 格式的字符串进行编码

说明

mixed json_decode ( string $json [, bool $assoc ] )

接受一个 JSON 格式的字符串并且把它转换为 PHP 变量

参数

json

待解码的 json string 格式的字符串。

assoc

当该参数为 TRUE 时,将返回 array 而非 object 。

返回值

Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned.

2.json_encode()

json_encode

(PHP 5 = 5.2.0, PECL json = 1.2.0)

json_encode — 对变量进行 JSON 编码

Report a bug 说明

string json_encode ( mixed $value [, int $options = 0 ] )

返回 value 值的 JSON 形式

Report a bug 参数

value

待编码的 value ,除了resource 类型之外,可以为任何数据类型

该函数只能接受 UTF-8 编码的数据

options

由以下常量组成的二进制掩码: JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_UNESCAPED_UNICODE.

Report a bug 返回值

编码成功则返回一个以 JSON 形式表示的 string 或者在失败时返回 FALSE 。

Report a bug 更新日志

版本 说明

5.4.0 options 参数增加常量: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, 和 JSON_UNESCAPED_UNICODE。

5.3.3 options 参数增加常量:JSON_NUMERIC_CHECK。

5.3.0 增加 options 参数.