将值添加到$ _SESSION ['name']然后通过值循环

问题描述 投票:-2回答:2

我正在使用$ _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 php-7
2个回答
0
投票
<?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;
}
?>

0
投票

您将变量$_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);
}
© www.soinside.com 2019 - 2024. All rights reserved.