将值添加到 $_SESSION['name'] 然后循环遍历值

Add values to $_SESSION['name'] then Loop thru values

我正在使用 $_SESSION 变量在我正在创建的应用程序中存储错误代码。 在我的表单处理页面上,我使用以下代码(作为示例):

session_start();
$_SESSION['site_msg']   = array();
if(1 == 1) {
    $_SESSION['site_msg'] = 18;
}
if(2 == 2) {
    $_SESSION['site_msg'] = 21;
}
if(3 == 3) {
    $_SESSION['site_msg'] = 20;
}

我希望使用一个函数从数组中获取值以在我的代码中的其他地方使用。

function error_code() {
    foreach($_SESSION['site_msg'] as $value) {
        echo "Value: $value <br />";
    }
}

上面给出了一个错误;警告:为 foreach() 提供的参数无效 ...

如果我这样写函数:

$array[] = $_SESSION['site_msg'];
foreach($array  as $value) {
echo  "VAL: " . $value;
}

它只给我最后一个值,20。

有人知道我哪里出错了吗? 谢谢!

<?php
session_start();
$_SESSION['site_msg']   = array();
if(1 == 1) {
    array_push($_SESSION['site_msg'],18);   // '=' overwrites the data, so push data in session array not to assign
}
if(2 == 2) {
    array_push($_SESSION['site_msg'],21);
}
if(3 == 3) {
    array_push($_SESSION['site_msg'],20);
}


$array = $_SESSION['site_msg'];  //remove [] from variable, its not needed
foreach($array  as $value) {
    echo  "VAL: " . $value;
}
?>

您将变量 $_SESSION['site_msg'] 声明为数组,但您将整数值传递给该变量!您需要将您的值添加为新的数组元素。

这应该有效:

session_start();
$_SESSION['site_msg']   = array();
if(1 == 1) {
    $_SESSION['site_msg'][] = 18;
}
if(2 == 2) {
    $_SESSION['site_msg'][] = 21;
}
if(3 == 3) {
    $_SESSION['site_msg'][] = 20;
}

作为替代方案,您可以使用函数 array_push() 将您的值添加到数组中:

session_start();
$_SESSION['site_msg']   = array();
if(1 == 1) {
    array_push($_SESSION['site_msg'], 18);
}
if(2 == 2) {
    array_push($_SESSION['site_msg'], 21);
}
if(3 == 3) {
    array_push($_SESSION['site_msg'], 20);
}