用数组选择大小写


Select case with array

如何使用数组来检查表单验证?

这是我的代码:

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

然后,我想写代码来得到这个结果:
如果name为空:"请填写姓名"
如果email为空:"请填写您的电子邮件"
如果name和email为空:"请填写您的姓名和电子邮箱"
如果name和email和message为空:

如果你想连接你的消息,那么最好使用if语句:

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

.=将把该字符串与现有字符串连接。

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

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

您可以直接尝试:

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

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

在包括php在内的许多语言中,开关大小写必须具有常量表达式。因此,诸如变量或函数调用之类的东西不起作用。

您最好使用conditionals

你的代码也缺少$符号变量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;

你应该简单地写:

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