来自$ _POST *的值不是*是字符串吗?

时间:2013-02-19 14:49:02

标签: php httpwebrequest request

在PHP中,全局$ _POST数组中的值是否可以是数组或字符串以外的其他值?

目标是不必检查脚本中是否所有内容都不是数组或字符串。如果我知道变量的类型,我不必做一些奇怪的验证。如果我期望一个字符串,我不必将所有内容都转换为字符串以确保它是一个字符串。

3 个答案:

答案 0 :(得分:4)

$_POST["key"] = true;

var_dump($_POST["key"]); // bool(true)

环境设置的值虽然是字符串。

答案 1 :(得分:3)

根据文档http://php.net/manual/en/reserved.variables.post.php

An associative array of variables passed to the current script via the HTTP POST method. 

因此发送的所有数据都是关键数组中的关联数组。有Numbers(int,float等),字符串,数组(数字或字符串)和对象数据类型。

使用消除规则,我们可以从支持的数据类型中删除Object,剩下的左边是字符串,数字和数组。

现在,如果您看到表单,输入字段将采用字符串,则无法指示输入字段中输入的值是数字还是字符串。因此,为了安全起见,所有发布的值都是字符串。元素数组也有字符串值。

当您获得$ _POST中的值时,它只是一个数组,您可以随时覆盖它

$_POST['username'] = 1;
var_dump($_POST['username']); // int (1)

我希望这有点道理

答案 2 :(得分:2)

你可以将它投射到你想要的任何地方^^

intval($_POST['INTEGER']);
or simply
 (int)$_POST['int']