今天在前任开发员遗留的项目中遇到这么一个奇怪的问题。纠结了很长时间,突然间恍然大悟,,想起自己以前看过的一篇文章,瞬间所有的怪异现象全有了解释。
这个怪异问题是这样的。
我有一个很长很长的表单。如下:
<form actionmethod=”post”>
<inputtype=”checkbox” name=”user_id[]” value=”001”/>
<inputtype=”text” name=”001_name”/>
<inputtype=”text” name=”001_address”/>
<inputtype=”text” name=”001_email”/>
<inputtype=”checkbox” name=”user_id[]” value=”002”/>
<inputtype=”text” name=”002_name”/>
<inputtype=”text” name=”002_address”/>
<inputtype=”text” name=”002_email”/>
<inputtype=”checkbox” name=”user_id[]” value=”003”/>
<inputtype=”text” name=”003_name”/>
<inputtype=”text” name=”003_address”/>
<inputtype=”text” name=”003_email”/>
.
.
.
<inputtype=”checkbox” name=”user_id[]” value=”500”/>
<inputtype=”text” name=”500_name”/>
<inputtype=”text” name=”500_address”/>
<inputtype=”text” name=”500_email”/>
<inputtype=”submit”/>
</form>
当我提交表单,发现这么个奇怪的问题。我选择前面的用户传过来的$_POST[‘user_id’]是正常的,但是到我选择后面的几个用户(例如第500个用户)时,发现$_POST[‘user_id’]是不存在的。百思不得其解,前面的checkbox和后面的checkbox没有什么区别啊,但是为什么就是传不过去呢?
然后我在选择后面的有没有了的怪异现象。
php内存报警。
再次意识到这样大面积构造荣冗余的表达是一个非常糟糕的编码习惯。
转动心中的期待,血在澎湃,吃苦流汗算什么。