我有一个大约10个字段的注册表单,并且在处理之前都需要填写它们,所以如果我想出这个检查,那么试图避免所有这些,这是一个好方法吗?
foreach($list as $items) {
if(empty($items)) {
$error[] = "All fields are required.";
break;
}
}
或者我应该if(空($ field_1)||空($ field_2)等..然后输出错误?
答案 0 :(得分:3)
没关系。如果您只想显示消息“所有字段都是必填项”。没有显示哪个字段为空白。
否则,如果您检查并显示哪个字段为空,则会更加用户友好。
答案 1 :(得分:3)
假设您的数据来自$_GET
或$_POST
,则所有数据字段都是字符串。这意味着您应该能够在single function call:
if (in_array('', $list, TRUE)) {
$error[] = "All fields are required.";
}
这会查找完全等于空字符串的字符串。如果您想使比较松散(与empty()
的检查大致相同),只需删除最终的TRUE
。
编辑考虑一下,你不需要严格的比较。我这样做是为了允许'0'
的合法字段值(empty()
不允许),但是由于'0' != ''
,因此也允许进行宽松的比较。
另一个编辑如果你想检查刺痛的长度是否大于2,你将不得不循环:
foreach ($list as $item) {
if (strlen($item) < 2) {
$error[] = "All fields are required.";
break;
}
}
这也将“清除0
”,假设您的意思是“不允许值为0
”。如果您还想禁止'00'
(或导致0
的任何其他字符串),您可以将if
子句更改为:
if (strlen($item) < 2 || (!(int) $item)) {
答案 2 :(得分:3)
最好像你一样把它放到循环中,但是请注意,即使用户输入0
并且将传递仅包含空格的字符串,这也会失败,因此您可能希望做出比{{更好的检查1}}
答案 3 :(得分:2)
我会通过in_array检查来解决这个问题。
<?php
$fields=array('name','age','yadayada','something_else');
foreach ($_POST as $key=>$value){
if(in_array($key,$fields) && $value!=''){
$$key=$value;
}else{
$error[$key]='This field is required.';
}
}
?>