
php 的http_build_query 会将boolean 类型的数据转换为1 或0
对于php 中的http_build_query 函数,当它处理boolean 类型的数据时,确实会将其转换为"1" 或"0",分别对应true 和false。
为了避免这个问题,可以通过以下解决方案:
使用array_walk_recursive
立即学习“PHP免费学习笔记(深入)”;
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
我们可以使用array_walk_recursive 函数递归遍历数据,将其中的boolean值转换为所需的字符串形式。 "true" 和 "false"。
$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通过这种方式,你可以在使用 http_build_query 之前将布尔值转换为字符串形式,以符合你的需要。
后者的补充说明
- 对于后端的类型检查错误,需要与开发人员沟通,确认后端接受的参数类型是否正确。
- 对于 post 请求的问题,请提供更多详细的代码或请求信息,以便分析问题原因。
- python 请求可能使用不同的方式处理 boolean 值,例如使用字符串形式或 json 格式,这与 php 的处理方式不同。










