今天数组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_NONE1 JSON_ERROR_DEPTH2 JSON_ERROR_STATE_MISMATCH3 JSON_ERROR_CTRL_CHAR4 JSON_ERROR_SYNTAX5 JSON_ERROR_UTF86 JSON_ERROR_RECURSION7 JSON_ERROR_INF_OR_NAN8 JSON_ERROR_UNSUPPORTED_TYPE我返回的是 int 5,对照返回错误码,自然而然就是(异常的 UTF-8 字符,也许是因为不正确的编码)这个错误了,知道错误后,然后检查你要返回的数据,再做下处理就OK了。
新闻热点
疑难解答
图片精选