我正在使用PHP v5.6。
正如我读到的那样,php json_encode函数会自动将int转换为string。但不是我的情况。 Json_encode仍然将它返回到int而不是字符串。
例如:
json_encode(['code' => 200, 'results' => [id=> 1]]);
我的预期结果都变成了一个字符串。但我得到的是
{"code":200,"results":{"id": 1}}
预期产出:
{"code":"200","results":{"id": "1"}}
如何在不使用每个值的“”的情况下将所有结果更改为字符串?
注意:结果数组基于查询。
答案 0 :(得分:2)
在Thomas发表的评论中发布的链接中,您执行此操作的用户suggests:
$data = json_encode(array_map('strval', $data));
但就性能而言,这可能不是最有效的,因为数组上的每个条目都将通过strval
函数。
答案 1 :(得分:0)
答案 2 :(得分:0)
为了确保潜在多维数组的所有数字“叶节点”都被转换为字符串,调用 array_walk_recursive()
并对每个值类型进行有条件的更改。通过检查值是否“是数字”,可以防止 null
和布尔值等值被转换为字符串。
代码:(Demo)
$array = [
'code' => 200,
'results' => [
'id' => 1
],
'a' => [
[
'b' => [
4,
null,
false
]
]
]
];
array_walk_recursive(
$array,
function(&$v) {
if (is_numeric($v)) {
$v = strval($v);
}
}
);
echo json_encode($array);
输出:
{"code":"200","results":{"id":"1"},"a":[{"b":["4",null,false]}]}