如果之前未访问过数组,json_encode 返回 null

Posted

技术标签:

【中文标题】如果之前未访问过数组,json_encode 返回 null【英文标题】:json_encode returning null if array not accessed before 【发布时间】:2011-07-11 19:40:55 【问题描述】:

在我的代码中,我构建了一个数组并使用 json_encode 对其进行编码, json_encode 为这个数组返回 null 除非我插入指令“echo $responce->rows[0][0];”在编码之前,如果我注释掉这一行 json_encode 返回 null!

有人能找出原因吗?

echo $responce->rows[0][0];
echo json_encode($responce);

这个编码的 json 有这种行为,但适用于不同的数组:

"rows":["id":"33UD","cell":["Great Yarmouth Borough Council",5875732.23,61.01],
"id":"41UE","cell":["Newcastle-Under-Lyme District Council",2514111.76,20.24],
"id":"36UF","cell":["Ryedale District Council",96439.18,1.8],"id":"00CM","cell":
["Sunderland City Council",16473262.71,58.48]]

【问题讨论】:

您可以添加更多代码吗? var_dump($responce) 输出什么? 您是否从数据库中获取数据? 我们应该猜你的代码吗? 【参考方案1】:

如果您的数组值未编码为utf8,您将得到json_encode 返回的null(因此它们对于json_encode 不安全)

如果您从数据库中获取数据,请尝试使用:

mysql_query('SET CHARACTER SET utf8') 在您的SELECT 声明之前

【讨论】:

以上是关于如果之前未访问过数组,json_encode 返回 null的主要内容,如果未能解决你的问题,请参考以下文章

如何跳过数组的第一个和最后一个元素的循环并将它们设置为常量值?

当我在d3.js中执行.data(数据)时,如何跳过数组元素

Rails 3:#<Array:0xafd0660> 的未定义方法“page”

UIPickerView 在滚动时跳过数组中的值

js数组

如何禁止NumPy自动跳过数组的中心部分并仅打印角点