根据if-else条件使用php数组


use of php array as per if else condtion

我正在进行表单验证。当我点击提交时,它会在检查错误后给我有效的输出平均值不为空。但当我制作一个错误数组时,它的工作方式就不一样了。下面将介绍这两种方法。请帮我找到解决方案。。

$name = '';
$nameErr = '';
function test_input($data){
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    if (empty($_POST['name'])){
        $nameErr = 'Name is Required';
    }else {
        $name = test_input($_POST['name']);
        if (!preg_match("/^[a-zA-Z ]*$/",$name)){
            $nameErr = 'Only letters and white spcaes are allowed';
        }else{
            $name = $_POST['name'];
        }
    }
    //if (!empty($nameErr)){
    $errors = array ($nameErr);
    if ($errors != ''){
            //var_dump ($nameErr);
             var_dump ($errors);
?>
<h2>FeedBack Form</h2>
<span class="error">* Required Fields</span>
<br /><br />
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
Name:<input type="text" name="name" value="<?php echo $name ?>" />
<span class="error">*<?php echo $nameErr ?></span>
<br /><br />
<input type="submit" name="submit" value="submit" />
</form> 
<?php
    }else {
        echo $name;
    }
}else {
?>
<h2>FeedBack Form</h2>
<span class="error">* Required Fields</span>
<br /><br />
<form method="post" action="<?php echo htmlspecialchars($_SERVER ['PHP_SELF']); ?>">
Name:<input type="text" name="name" value="" />
<span class="error">*</span>
<br /><br />
<input type="submit" name="submit" value="submit" />
</form>
<?php   
   }
?>
</body>
</html>

您必须检查您的错误变量$nameErr是否已用isset初始化,并且不应将数组与字符串(而不是此:$errors != '')进行比较:

if (isset($nameErr)) {
    $errors = array ($nameErr);
    var_dump ($nameErr);
    var_dump ($errors);
    ...
}

如果出现错误,您的2var_dumps将输出以下内容:

string(41) "Only letters and white spcaes are allowed"
array(1) { [0]=> string(41) "Only letters and white spcaes are allowed" } 

预计第二个具有额外的数组包装器,但其余的都是相同的。