
http_build_query 与布尔值类型转换
php 中的 http_build_query 函数可以将数据转换为 url 查询字符串。然而,在将布尔值类型的数据转换为 1 或 0 时,可能会遇到问题。
默认情况下,http_build_query 使用 rfc1738 编码数据,其中对于布尔值的编码方式没有明确规定。因此,不同的语言可能采用不同的处理方式。php 中,布尔值转换为字符串时分别为 1 和 0,对应 true 和 false。
如果您需要将布尔值转换为 "true" 和 "false",可以使用 array_walk_recursive 函数递归遍历数据并进行转换。示例代码如下:
Python 3.14.2是Python编程语言在2025年12月5日发布的稳定版本,属于3.14系列的第二个维护更新。该版本包含了18项修复,重点解决了多进程、数据类及正则表达式等模块的回归问题,并修复了CVE-2025-12084等安全漏洞。此版本标志着自由线程模式(移除GIL)正式获得官方支持,是Python发展的重要里程碑。
$arr = [
'id' => 1,
'is_admin' => false,
'permissions' => [
'write' => false,
'read' => true,
'delete' => false,
'edit' => true,
'advanced' => [
'report' => true,
'down' => true,
],
],
];
array_walk_recursive($arr, function (&$val) {
is_bool($val) && $val = $val ? 'true' : 'false';
});
echo http_build_query($arr);
// id=1&is_admin=false&permissions[write]=false&permissions[read]=true&permissions[delete]=false&permissions[edit]=true&permissions[advanced][report]=true&permissions[advanced][down]=true
在 post 请求中遇到问题的原因可能是接收端对布尔值处理方式不同。如果您使用的是 x-www-form-urlencoded 格式,其使用 rfc3986 编码数据,与 rfc1738 的主要区别在于空格的处理。对于布尔值的处理也可能存在差异。
如果您使用的是 json 格式,则应使用 json 数据或直接发送,而无需经过 http_build_query。
如果您需要调试 python 请求,可以抓取请求包或提供相关代码以进行分析。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










