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
- 但我认为还有替代品吗?
答案 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)
答案 2 :(得分:-1)
这里的问题是从mysql返回的数据是一个字符串,而不是一个布尔值。如果你知道它总是要么是真的'或者' false',您可以将其与字符串文字进行比较,以获得正确的类型:
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$boolval = ($row['boolval'] === 'true');
然后,当它为json_encoded()
时,它将表示为基本布尔值,而不是字符串。