我有一个类似的数组:
[0] => stdClass Object
(
[name] => John
[id] => 1
[pass] => 0
)
数组由sql查询返回。现在我需要使用json_encode
,我希望id是整数并传递布尔值,但在json_encode
之后它们得到字符串类型。如何在json_encode
中使用正确的数据类型?
您可以遍历数组,将每个带有pass
键的值转换为布尔值,并将每个id
转换为整数,如下所示:
<?php
foreach ($results as $result) {
$result->id = (int) $result->id;
$result->pass = (bool) $result->pass;
}
对于类型转换,您可以首先遍历列表并强制转换相关属性:
foreach($data as $d)
{
$d->id = (int)$d->id;
$d->pass = (bool)$d->pass;
}
用于字符串转换问题;json_encode()
的第二个参数是options
(位掩码)。这里列出了可用的选项。在您的示例中,相关选项是JSON_NUMERIC_CHECK
,它将防止您的数字在结果JSON中被转换为字符串:
$json = json_encode($data, JSON_NUMERIC_CHECK);
id
为整数。设置pass
为布尔值,将其设置为boolean
(使用true
, false
)或将其强制转换为布尔值:
$obj->pass = (bool)$obj->pass;