在 PHP 中,来自全局 $_POST 数组的值可以是数组或字符串以外的其他东西吗?
目标是不必检查脚本中的所有内容是否都不是数组或字符串。如果我知道变量的类型,我就不必做一些奇怪的验证。如果我期望一个字符串,我不必将所有内容都转换为字符串以确保它是一个。
在 PHP 中,来自全局 $_POST 数组的值可以是数组或字符串以外的其他东西吗?
目标是不必检查脚本中的所有内容是否都不是数组或字符串。如果我知道变量的类型,我就不必做一些奇怪的验证。如果我期望一个字符串,我不必将所有内容都转换为字符串以确保它是一个。
$_POST["key"] = true;
var_dump($_POST["key"]); // bool(true)
环境设置的值虽然是字符串。
根据文档http://php.net/manual/en/reserved.variables.post.php
An associative array of variables passed to the current script via the HTTP POST method.
所以发送的所有数据都在关联数组中,在键值对中。有数字(int、float 等)、字符串、数组(数字或字符串)和对象数据类型。
使用排除规则我们可以从支持的数据类型中删除对象,剩下的就是字符串、数字和数组。
现在,如果您看到表单,输入字段正在接受字符串,没有迹象表明输入字段中输入的值是数字或字符串。所以为了安全起见,所有发布的值都是字符串。元素数组也有字符串值。
当您在 $_POST 中获取值时,它只是一个数组,您可以随时覆盖它
$_POST['username'] = 1;
var_dump($_POST['username']); // int (1)
我希望这有点道理
你可以把它转换成你想要的任何东西^^
intval($_POST['INTEGER']);
or simply
(int)$_POST['int']