Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JSON:真正的值随引号一起出现_Php_Json_Sencha Touch 2 - Fatal编程技术网

Php JSON:真正的值随引号一起出现

Php JSON:真正的值随引号一起出现,php,json,sencha-touch-2,Php,Json,Sencha Touch 2,我想为我的Sencha Touch应用程序输出一个嵌套的JSON数组,并且我必须向叶节点发送信号 以下是正确的语法: { "text": "Random", "leaf": true } 我从服务器端用PHP创建数组,下面是添加叶信息的行: $myRow['leaf'] = 'true'; 不幸的是,它不是那么简单,json编码后的输出我的数组是: { "text": "Random", "leaf":"true" } true周围

我想为我的Sencha Touch应用程序输出一个嵌套的JSON数组,并且我必须向叶节点发送信号

以下是正确的语法:

  {
      "text": "Random",
      "leaf": true
  }
我从服务器端用PHP创建数组,下面是添加叶信息的行:

$myRow['leaf'] = 'true';     
不幸的是,它不是那么简单,json编码后的输出我的数组是:

{
    "text": "Random",
    "leaf":"true"
}
true周围的引号有问题,因为Sencha Touch无法识别布尔值

我尝试在PHP文件中不加引号true,但后来我得到了

“叶”:“1”

在JSON回调中

我尝试了一些其他的技巧,但总是遇到同样的问题

有人也有同样的问题


提前谢谢你。

你得到的是
字符串,因为它是php中的字符串。。。使用布尔值

$myRow['leaf'] = true; 

如果我记得它是php<5.2版本中的一个bug:

只需尝试:

$jsonencodedstring = str_replace('"true"', 'true', $jsonencodedstring);
它与

$myRow['leaf'] = true;
但是我使用的是
utf8\u encode()
,所以它将
true
改为“1”


检查如果(!mb_detect_encoding($item,'utf-8',true))条件,即上述问题的解决方案,可能会帮助某人:)

无法使用布尔值复制:。仔细检查你的代码。你能给我们看看你的json输出代码吗?你是如何将PHP结构转换成json的?您是在使用json_编码还是其他什么?谢谢felix,我找到了为什么我在输出中有“leaf”:“1”。我在数组上执行utf8_encode(),这就是为什么它输出“1”而不是true。我无法回答我的问题,因为我的声望很低(新成员被发现;-),但是:实际上它与$myRow['leaf']=true一起工作;但是我使用的是utf8_encode(),所以它将true改为“1”我学到了一些东西,谢谢:)“我尝试在我的PHP文件中不使用true的引号,但后来我得到了…”看起来除了你felix:-)我遇到了相同的问题到目前为止没有任何解决方案??没有bug(至少不是你的意思)
json_decode
仅在PHP5.2.0中引入(有些人可能称之为以前不存在的bug;)。对不起,你说得对。。。我发现了一些我自己的代码。。。json_encode将始终引用它。。。但是,您可以对“true”进行替换以删除引号。
array_walk_recursive($array, function(&$item, $key){
    if(!mb_detect_encoding($item, 'utf-8', true)) {
            $item = utf8_encode($item);
    }
});