当var_dump($ json_array)时bool(false)

时间:2017-10-23 21:34:49

标签: php json mysqli

我试图从查询中检索一个数组,查询没问题,我有一个assoc_array,当我var_dump()表示数组一切正常时。

json_enconde($assoc_array)

之后的那个数组

然而,当我做var_dump($json_array)时,我得了一个布尔(假)

来自查询的正常assoc_array是:

array(2) { [0]=> array(4) { ["nombre"]=> string(13) "Raxo Pimienta" ["descripcion"]=> string(52) "Ternera en salsa a la pimienta acompa�ada de patatas" ["precio"]=> string(2) "14" ["id"]=> string(1) "1" } [1]=> array(4) { ["nombre"]=> string(14) "Ensalada Cesar" ["descripcion"]=> string(58) "Lechuga, bacon, crotones y salsa cesar con queso parmesano" ["precio"]=> string(1) "8" ["id"]=> string(1) "2" } } 

2 个答案:

答案 0 :(得分:0)

JSON不是二进制安全的。有很多二进制数据,根本无法编码为json。另一方面,PHP字符串完全是二进制安全的,它们可以包含任何字节序列(与json不同)。你的数组可能包含一个(php)字符串,其字节序列不能进行json编码。尝试var_dump(json_last_error_msg());,它应说明编码失败的原因。您可以尝试使用JSON_PARTIAL_OUTPUT_ON_ERROR标志,但最好找到这个json不兼容数据的源,并将其编码为json-safe。 ps,就像php字符串一样,base64编码是二进制安全的。当你找到源代码时,可以在base64中对其进行编码,然后可以将其添加到json中。

编辑:json不兼容的角色可能是[" descripcion"]中的奇怪角色:acompa�ada - 并暗示您在其他地方遇到编码问题。 (你在连接到sql db时使用的是utf8字符集吗?是使用utf8整理的db表吗?看起来在某处导致编码错误导致'#34; descripcion"字符串)

答案 1 :(得分:-1)

问题是来自数据库数据的“ñ”字符,不再存在。

相关问题