从Sql查询获得结果后,我将结果存储在 $ data 数组中, var_dump($ data)之后看起来像这样:
array(100) {
[0]=>
object(stdClass)#3 (3) {
["qid"]=>
string(2) "19"
["q_no_on_paper"]=>
string(1) "0"
["question_text"]=>
string(139) " Consider the following statements- 1- The Centre recently unveiled the expanded version of the. . ."
}
[1]=>
object(stdClass)#4 (3) {
["qid"]=>
string(2) "16"
["q_no_on_paper"]=>
string(1) "0"
["question_text"]=>
string(138) ". There is dispute over the Tipaimukh hydraulic project between India and A. Bhutan B. Nepal C.. . ."
} ...
阵列很长,所以这只是它的一部分
现在当我json_encode($data);
,然后 var_dump 时,我得到bool(false)
。
我按照DataTables download builder中的示例#1后尝试使用json_last_error()
,它显示- No errors
我哪里错了?为什么不编码呢?
修改
["question_text"]
包含一些 html 文字。
答案 0 :(得分:0)
这可以帮助您,
虽然版本日志中没有记录这一点,但non-UTF8
中的5.5
处理行为已发生变化,这种方式可能会使调试变得困难。
将非UTF-8
字符串传递给json_encode()
会使函数return false
在 PHP 5.5 中,而它只会使此字符串无效(只有这一字符串) )以前的版本。
在Latin-1 encoded file
中,请写下:
<?php
$a = array('é', 1);
var_dump(json_encode($a));
?>
PHP < 5.4:
string(8) "[null,1]"
PHP >= 5.5:
bool(false)
PHP 5.5
当然是正确的(如果编码失败,则返回false)但是在更新到5.5时它可能会引入错误,因为以前你可以获得JSON
的其余部分,即使一个字符串是不在UTF8
(如果没有使用这个字符串,你永远不会通知它已经无效)
因此,您可能会遇到 PHP&gt; = 5.5
的后续示例请参阅 php.net 文档http://php.net/manual/en/function.json-encode.php#115733
答案 1 :(得分:-1)
我在var_dump($ data)结果中看到一些空格/ HTML字符(如\ n,\ t,\ t \ r)。这使得JSON无效,因此json_encode返回false。检查数组中的以下索引......
["question_text"]=> string(139) " Consider the following statements-