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

时间:2016-05-16 00:33:23

标签: php arrays session

我正在用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')

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

2 个答案:

答案 0 :(得分:1)

此代码可以运行。 。 。

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

答案 1 :(得分:1)

如果要使用未设置的值的错误消息填充$_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;
    }
}