pupuk/blog

PHP的$_POST的值都是string类型吗?

Opened this issue · 0 comments

pupuk commented

在项目中,有时候发现小伙伴对$_POST的字段再做一次类型转行,比如这样:
image7
而有的小伙伴则说,通过HTTP协议过来的已经string类型了,没有必要再做强制类型的转行。

实际情况怎么样的呢?搜索资料&实验验证
image1
通过上面表单提交,然后$_POST[‘name’]的类型总为 string类型吗?答案是的

下面是Stackoverflow上面的一些回答,当然准确是去查RFC的文档。
image2

当然$_POST是一个super global超全局变量,在PHP的任何作用域都可用。我们也可以在PHP程序里面直接定义一个变量。
image3
image4

所以通过HTTP协议传过来的$_POST,默认都是string类型,因此我们在转成string没有必要。
但是我们可以在form表单里面构造一下,使$_POST出现层级结构,上级结构就可能变成数组(Array)比如:
image5
此时的$_POST[‘name’]的值就是array。
image6
不过最后一级的字段仍然还是string。所以再跟前端沟通明确的情况下,对$_POST已经是string的变量,没有必要再做一次强制类型转换。
所以这种再做一次类型转行,就没有必要了。