今天數組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了。
新聞熱點
疑難解答
圖片精選