Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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
Mysql/PHP/json_编码布尔字符串转换_Php_Mysql_Json - Fatal编程技术网

Mysql/PHP/json_编码布尔字符串转换

Mysql/PHP/json_编码布尔字符串转换,php,mysql,json,Php,Mysql,Json,我有一个mysql查询,比如: 选择cca_id作为id,cca_标题作为文本,如果从crm_类别中选择count*,其中cca_id_prev=id,'TRUE','FALSE'作为crm_类别中的子项,其中 现在我得到了一个数组,其中true/false为字符串 如果我使用json_编码,结果就像{id:false} 但我需要不带引号的true/false-问题是如果我在mysql查询中使用true false作为布尔值,它将返回0/1-但我也不希望这样 当然,我可以对json字符串运行st

我有一个mysql查询,比如:

选择cca_id作为id,cca_标题作为文本,如果从crm_类别中选择count*,其中cca_id_prev=id,'TRUE','FALSE'作为crm_类别中的子项,其中

现在我得到了一个数组,其中true/false为字符串

如果我使用json_编码,结果就像{id:false}

但我需要不带引号的true/false-问题是如果我在mysql查询中使用true false作为布尔值,它将返回0/1-但我也不希望这样

当然,我可以对json字符串运行str_replace,但我认为还有其他选择,不是吗?

好吧,您可以从数据库中选择字符串。这就是被编码的东西。使用SQL真/假布尔值(在PHP中变为0/1),并在JSON编码之前将其转换为PHP布尔值:

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

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

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

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

然后,当它被json_编码时,它将被表示为一个基本布尔值,而不是一个字符串。

我有同样的问题:

我将PHP用于转换值gettype,例如POST:


你将如何使用布尔值?在JavaScript中?我使用jstree,jstree需要类似{children:false}的符号。如果使用php,您可以这样做:$result[]['children']=$data['children']?真:假;你觉得呢?是的,我想我可以这样做-但我必须迭代数组-在这种情况下,我也可以使用str_replace,这似乎不是最好的解决方案-我不想迭代给定的数组,只是因为这样是的,在这种情况下,我也必须迭代数组-但我想你是对的-这似乎是最好的解决方案现在
foreach ($_POST as $k => $v) {
        settype($_POST[$k], gettype($v));
}}
echo json_encode($_POST);