我有一个约10个字段的注册表单,他们都需要在处理前填写,所以尽量避免所有这些如果检查我想出了这个,这是一个好方法吗?PHP检查是否为空字段
foreach($list as $items) {
if(empty($items)) {
$error[] = "All fields are required.";
break;
}
}
,或者我应该做,如果(空($ field_1)||空($ field_2)等。然后输出错误?
我有一个约10个字段的注册表单,他们都需要在处理前填写,所以尽量避免所有这些如果检查我想出了这个,这是一个好方法吗?PHP检查是否为空字段
foreach($list as $items) {
if(empty($items)) {
$error[] = "All fields are required.";
break;
}
}
,或者我应该做,如果(空($ field_1)||空($ field_2)等。然后输出错误?
假设你的数据从$_GET
或$_POST
,所有的数据来字段将是字符串,这意味着t帽子,你应该能够做检查的single function call:
if (in_array('', $list, TRUE)) {
$error[] = "All fields are required.";
}
这看起来字符串这是正好等于一个空字符串。如果你想使比较宽松(或多或少与empty()
所做的检查完全相同),只需删除最后的TRUE
即可。
编辑想一想,你不需要严格的比较。我这样做是为了允许合法的字段值'0'
(其中empty()
不允许),但是这也将被允许与宽松的比较,因为'0' != ''
。
ANOTHER编辑如果你想检查刺的长度大于二,你将不得不循环:
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)) {
它的确定。如果你只是想显示消息“所有字段是必需的。”没有显示出其在空白字段。
否则,如果您检查,并显示该字段为空,将更加人性化。
这是好主意,把它变成循环像你一样,但请注意,这将即使用户输入0
并且会传递仅包含空格的字符串,也可能会失败,因此您可能希望做出比empty()
更好的检查
我可以检查strlen()是否至少2?还从那里清除0? – Grigor 2012-01-29 23:04:40
你可以检查你想要的全部,这取决于你有什么样的领域和他们想要的输入。除了'strlen',你可能还需要'trim' – 2012-01-29 23:12:48
我会用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.';
}
}
?>
你应该注意'empty'也对'0'(一个只包含字符0的字符串)返回true。 – Arjan 2012-01-29 23:00:34