Mysql / PHP / json_encode布尔字符串转换

时间:2014-04-18 11:38:11

标签: php mysql json

嘿伙计们,我需要一些帮助 我可以说一个mysql查询:

SELECT cca_id AS id, cca_title AS text,IF((SELECT count(*) from crm_categories WHERE cca_id_prev = id),'TRUE','FALSE') AS children FROM crm_categories WHERE...

现在我得到一个带有true / false字符串的数组

如果我使用json_encode,结果就像{"id":"false"}

但我需要没有引号的真/假 - 问题是如果我在mysql查询中使用true false作为布尔值它返回0/1 - 但我不想要那个......

当然我可以对json字符串运行str_replace - 但我认为还有替代品吗?

3 个答案:

答案 0 :(得分:8)

好吧, 从数据库中选择字符串。这就是编码的内容。使用SQL true / false布尔值,在PHP中成为0 / 1,并在JSON编码之前将它们转换为PHP布尔值:

$data['id'] = (bool)$data['id']; // 0/1 -> PHP false/true

echo json_encode($data); // {'id':true}

答案 1 :(得分:0)

我遇到了同样的问题:

我使用PHP来转换值[this.x, a, b],例如 POST

gettype

http://php.net/manual/en/function.settype.php

答案 2 :(得分:-1)

这里的问题是从mysql返回的数据是一个字符串,而不是一个布尔值。如果你知道它总是要么是真的'或者' false',您可以将其与字符串文字进行比较,以获得正确的类型:

$row = $stmt->fetch(PDO::FETCH_ASSOC);
$boolval = ($row['boolval'] === 'true');

然后,当它为json_encoded()时,它将表示为基本布尔值,而不是字符串。