Php 向数组中未知数量的元素添加值
我正在用PHP制作一个项目,我创建了多个变量,如下所示:Php 向数组中未知数量的元素添加值,php,arrays,session,Php,Arrays,Session,我正在用PHP制作一个项目,我创建了多个变量,如下所示: $errors = array(); $errors['firstname'] = 'Enter First Name' $errors['lastname'] = 'Enter Last Name' $errors['age'] = 'Enter Age' 我正在使用另一个数组$\u SESSION['flash']['error']来显示项目中的错误 我想要的是得到这样一个数组:$\u SESSION['flash']['error
$errors = array();
$errors['firstname'] = 'Enter First Name'
$errors['lastname'] = 'Enter Last Name'
$errors['age'] = 'Enter Age'
我正在使用另一个数组
$\u SESSION['flash']['error']
来显示项目中的错误
我想要的是得到这样一个数组:
$\u SESSION['flash']['error']=('Enter First Name','Enter Last Name','Enter Age')
请帮我解决这个问题。提前感谢。此代码可以运行
$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" } }
如果要使用未设置值的错误消息填充
$\u会话['flash']['error']
,可以使用循环来完成。在这里,我将创建一个包含所有必需键的数组,然后在这些键上循环,检查值是否为空(在本例中为$\u 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;
}
}
$\u会话['flash']['error']=[$errors['firstname']、$errors['lastname']、$errors['age']代码>?是的,但如果可能的话,可以使用一个循环,因为$errors
的元素数在循环中设置是未知的,并且检查该值是否通过post设置,您可以执行$required=['firstname','lastname','age'];foreach($key时必需){if(empty($\u POST[$key']){$\u SESSION['flash']['error'][=$errors[$key];}
。使用$errors
中所需密钥的数组$required
,可以检查值是否为空()
并添加到您的$\u会话
数组中,如果您只想将所有$errors
传递到$\u会话['flash']['error']
,一个类似的循环-foreach($errors as$error){$\u会话['flash'['error'][=$error;}
感谢您的帮助。请将您的答案发布给我,以便我将其标记为正确;)@LeiLionel我添加了一个更简单的示例,它只是在$errors
数组上循环,并使用第二个示例的更清晰/更简单版本检查密钥。有时我想得太多,不记得保持简单。