0

如何编写带有数组的选择案例来检查表单验证?

这是我的代码:

$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];

$array = array($name,$email,$message);

switch($array[]) {
    case empty($array[0]):
        error = "name";
        break;
    case empty($array[1]):
        error =  "email";
        break;
    case empty($array[2]):
        error = "message";
}

然后,我想编写代码来得到这样的结果:
如果姓名为空: “请填写您的姓名”
如果电子邮件为空: “请填写您的电子邮件”
如果姓名和电子邮件为空: “请填写您的姓名和email"
如果姓名、电子邮件和留言为空: "请填写您的姓名、电子邮件和留言"

4

5 回答 5

3

你想连接你的消息,所以最好使用 if 语句:

$error = "Please fill in: ";

if (empty($array[0]))
    $error .= "name ";
if (empty($array[1]))
    $error .= "email ";
if (empty($array[2]))
    $error .= "message ";

.=会将字符串连接到现有字符串。

于 2013-06-06T14:58:56.823 回答
1

试试这个语法正确的解决方案:

$empty = array();
$fields = array('name', 'email', 'message');
foreach ($fields as $key => $value){
    if(empty($_POST[$value])) $empty[] = $value;
}
$error_msg = '';
$count = count($empty);
$cnct = ', ';
if ($count > 0){
    $error_msg = 'Please fill in your ';
}
foreach ($empty as $key => $value){
    if ($key == $count - 2){
        $cnct = ' and ';
    }elseif($key == $count - 1){
        $cnct = '.';
    }
    $error_msg .= $value.$cnct;
}
于 2013-06-06T15:20:40.357 回答
1

您可以简单地尝试:

$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];

$error="Please fill in your ";

$array = array('name'=>$name,'email'=>$email,'message'=>$message);
foreach($array as $key=>$value){
    if(empty($value)){
        $error.=','.$key;
    }
}
于 2013-06-06T15:21:35.500 回答
0

你应该简单地写:

$error = "Please fill in: ";

if (empty($array[0]))
    $error.= "name ";
if (empty($array[1]))
    $error.=  "email ";
if (empty($array[2]))
    $error.= "message";

没有为您想要做的事情进行切换。

于 2013-06-06T14:55:41.103 回答
0

您不能在块case语句中使用变量表达式switch

在许多语言中,switch case 必须有一个常量表达式,包括php. 因此,变量或函数调用之类的东西不起作用。

你最好用conditionals这个。

您的代码也缺少$variable 的符号error

改为这样做:

  $name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];

$array = array($name,$email,$message);

    $error="Please fill in your ";
    if(empty($array[0])){
        $error.= "\nname";
        }
    if(empty($array[1])){
        $error.="\nemail";
        };
    if(empty($array[2])){
        $error.= "\nmessage";
    }
   echo $error;
于 2013-06-06T14:59:32.137 回答