pupuk / blog

My New Blog. Record & Share. Focus on PHP, MySQL, Javascript and Golang.
MIT License
9 stars 2 forks source link

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

Open pupuk opened 5 years ago

pupuk commented 5 years ago

在项目中,有时候发现小伙伴对$_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的变量,没有必要再做一次强制类型转换。 所以这种再做一次类型转行,就没有必要了。