php json_encode输出空白问题

版权声明:本文为博主原创文章,转载请声明出处。 https://blog.csdn.net/ityang521/article/details/55225290

今天数组json_encode转json的时候,输出一片空白,难道是数据量太大了?导致输出空白了?
后来检查下php程序似乎没有出错,就是json_encode的时候出现了问题,那到底是什么问题呢?

我们先来说下json_encode这个函数

(PHP 5 >= 5.2.0, PECL json >= 1.2.0, PHP 7)
json_encode — 对变量进行 JSON 编码

说明
-----------------------------------------------------------
string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )

参数
-----------------------------------------------------------
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_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR。

depth
设置最大深度。 必须大于0。

返回值
-----------------------------------------------------------
成功则返回 JSON 编码的 string 或者在失败时返回 FALSE 。

注意:上面对参数明确说明(所有字符串数据的编码必须是 UTF-8)

可能正是因为这一点导致我输出错误,但是我怎么知道,会是这个错误呢?因为我发现有一个这个函数json_last_error

我们看下这个函数

(PHP 5 >= 5.3.0, PHP 7)
json_last_error — 返回最后发生的错误

说明
-----------------------------------------------------------
int json_last_error ( void )
如果有,返回 JSON 编码解码时最后发生的错误。

参数
-----------------------------------------------------------
此函数没有参数。

返回值
-----------------------------------------------------------
返回一个整型(integer),这个值会是以下的常量之一:

这里写图片描述

用法:

例如:
echo json_encode(array('error' => '0', 'message' => '没有错误'));
var_dump(json_last_error());
//这里也可以是json_decode

//错误码对照
0 JSON_ERROR_NONE
1 JSON_ERROR_DEPTH
2 JSON_ERROR_STATE_MISMATCH
3 JSON_ERROR_CTRL_CHAR
4 JSON_ERROR_SYNTAX
5 JSON_ERROR_UTF8
6 JSON_ERROR_RECURSION
7 JSON_ERROR_INF_OR_NAN
8 JSON_ERROR_UNSUPPORTED_TYPE

我返回的是 int 5,对照返回错误码,自然而然就是(异常的 UTF-8 字符,也许是因为不正确的编码)这个错误了,知道错误后,然后检查你要返回的数据,再做下处理就OK了。

阅读更多

没有更多推荐了,返回首页