2013-02-19 31 views
1

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

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

+5

别的东西吗?你有什么想法 – Nick 2013-02-19 14:49:45

+3

而不是玩猜测游戏,解释你的问题的原因,你想达到什么。 – CodeCaster 2013-02-19 14:51:16

+1

possible dupe http://stackoverflow.com/questions/5052932/how-to-get-int-instead-string-from-form – 2013-02-19 14:52:47

回答

4
$_POST["key"] = true; 

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

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

3

你可以将它转换到任何你想^^

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

将值转换为除字符串以外的值不同于与字符串不同的值。这并没有真正回答这个问题。 – jurgemaister 2013-02-19 14:54:07

4

按照文档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) 

我希望这一定意义

相关问题