选择带数组的大小写

时间:2013-06-06 14:52:46

标签: php arrays switch-statement

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

这是我的代码:

$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";
}

然后,我想编写代码来得到这个结果:
如果名称为空: “请填写您的姓名”
如果电子邮件是空的: “请填写您的电子邮件”
如果姓名和电子邮件为空: “请填写您的姓名和电子邮件”
如果姓名,电子邮件和消息为空: “请填写您的姓名,电子邮件和留言”

5 个答案:

答案 0 :(得分:3)

您想要连接消息,因此最好使用if语句:

$error = "Please fill in: ";

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

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

答案 1 :(得分: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;
}

答案 2 :(得分: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;
    }
}

答案 3 :(得分:0)

你应该写一下:

$error = "Please fill in: ";

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

没有为您想要的事情做出开关。

答案 4 :(得分:0)

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

切换案例必须在包含php的多种语言中具有常量表达式。因此,像变量或函数调用之类的东西不起作用。

最好使用conditionals

您的代码也缺少变量$的{​​{1}}符号。

请改为:

error