json_encode函数对mysql布尔值判断的BUG?

浏览:499 发布日期:2010/06/08
- 普通 - 未处理
[i=s] 本帖最后由 izyue 于 2010-6-8 23:32 编辑 [/i]

有这样一张数据表:
CREATE TABLE `trace_area` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`pid` int(11) NOT NULL default '0',
`leaf` tinyint(1) NOT NULL,
PRIMARY KEY (`id`),
KEY `pid` (`pid`)
) ENGINE=MyISAM AUTO_INCREMENT=3235 DEFAULT CHARSET=utf8;

数据为:
id name pid leaf
1 北京 0 0
2 北京市 1 0
3 东城区 2 0
4 西城区 2 0
5 崇文区 2 0
6 宣武区 2 0
7 朝阳区 2 0

其中leaf为布尔值
但是我json_encode出来后为:[{"id":"1","text":"\u5317\u4eac","leaf":"0"},{"id":"21","text":"\u5929\u6d25","leaf":"0"}]我希望的结果是:[{"id":"1","text":"\u5317\u4eac","leaf":0},{"id":"21","text":"\u5929\u6d25","leaf":0}]我查看了json_encode函数 function format_json_value(&$value)
    {
        if(is_bool($value)) {
            $value = $value?'true':'false';
        }elseif(is_int($value)) {
            $value = intval($value);
        }elseif(is_float($value)) {
            $value = floatval($value);
        }elseif(defined($value) && $value === null) {
            $value = strval(constant($value));
        }elseif(is_string($value)) {
            $value = '"'.addslashes($value).'"';
        }
        return $value;
    }
由于mysql没有bool数据类型,TP内核中is_bool判断了,似乎不起作用,希望能提供解决方法。
评论(
后面还有条评论,点击查看>>