向数组中未知数量的元素添加值


Add values to an unknown number of elements in an array

我正在用PHP做一个项目,我创建了多个变量,如下所示:

$errors = array();
$errors['firstname'] = 'Enter First Name'
$errors['lastname'] = 'Enter Last Name'
$errors['age'] = 'Enter Age'

我有另一个数组$_SESSION['flash']['error']来显示项目中的错误。

我想要的是得到这样的数组:$_SESSION['flash']['error'] = ('Enter First Name', 'Enter Last Name', 'Enter Age')

请帮我解决这个问题。提前谢谢。

如果您想用未设置值的错误消息填充$_SESSION['flash']['error'],可以使用循环来完成。在这里,我将创建一个包含所有必需密钥的数组,然后在这些密钥上循环,检查值是否为空(在本例中为$_POST),然后将错误消息插入数组-

// array of required keys
$required = ['firstname','lastname','age']; 
// loop over the required keys
foreach($required as $key){ 
    // check if that key value is empty
    if(empty($_POST[$key])){ 
        // if the value was empty, insert the corresponding error message into the array
        $_SESSION['flash']['error'][] = $errors[$key]; 
    }
}

但是,如果您只是想添加所有的错误消息,而不添加任何条件,那么一个简单的循环就可以做到这一点-

foreach($errors as $error) { 
    $_SESSION['flash']['error'][] = $error; 
}

作为替代方案,您可以在$error数组上循环。这具有与第一实施例相同的结果,具有第二实施例的清洁度。在这里,我们检查$errors密钥,然后添加$errors值。

foreach($errors as $key => $value) {
    if(empty($_POST[$key])){
        $_SESSION['flash']['error'][] = $value;
    }
}

此代码可以运行。

$errors = array();
$errors['firstname'] = 'Enter First Name';
$errors['lastname'] = 'Enter Last Name';
$errors['age'] = 'Enter Age';
$_SESION['flash']['error'] = implode(", ", $errors);
var_dump($_SESSION);
# the result is: 
# array(1) { ["flash"]=> array(1) { ["error"]=> string(42) "Enter First     Name,Enter Last Name,Enter Age" } }