我是使用PHP会话的新手,我在使用$ _POST方法更新会话数组时遇到了问题。
基本上,每个按钮都有一个值,我想在每次点击时添加到数组$_SESSION['items']
。但是,目前正在发生的事情是数组被重置并被最后选择的值替换。
这是我到目前为止所得到的:
<?
session_name("test");
session_start();
?>
<form method="post">
<button type="submit" name="item[]" value="Item 1">Item 1</button>
<button type="submit" name="item[]" value="Item 2">Item 2</button>
</form>
<?
$_SESSION['items'] = array();
array_push($_SESSION['items'], $_POST['item']);
print_r($_SESSION['items']);
?>
任何帮助将不胜感激。
谢谢!
答案 0 :(得分:1)
$_SESSION['items'] = array();
此行每次加载页面时都会重置$ _SESSION ['items']。如果要初始化数组,请尝试
if(!isset($_SESSION['items']) ) {
$_SESSION['items'] = array();
}
代替。
答案 1 :(得分:0)
在这种情况下,您可以尝试类似:
$_SESSION['items'] = $_POST['items'];
如果您想在会话中添加数组而不是值,可以尝试以下方法:
$items= new array(
"1" => "item1",
"2" => "item2");
$_SESSION['items'] = $items;
答案 2 :(得分:0)
看起来你正在用
重置Session数组$_SESSION['items'] = array();
离开这一点似乎可以解决问题。
我还建议您将按钮的名称更改为“item”,否则每次单击时都会向会话数组添加一个数组,而不仅仅是单个值。当然,除非你的意思正是如此。
新脚本如下所示:
<?
session_name("test");
session_start();
?>
<form method="post">
<button type="submit" name="item" value="Item 1">Item 1</button>
<button type="submit" name="item" value="Item 2">Item 2</button>
</form>
<?
array_push($_SESSION['items'], $_POST['item']);
print_r($_SESSION['items']);
?>
答案 3 :(得分:0)
$ _ SESSION已经是一个数组,无需声明它。在脚本的顶部,您已经创建了$_SESSION['test']
尝试
<?
array_push($_SESSION['test'], $_POST['item']);
print_r($_SESSION['test']['item']);
?>
您可能还需要撤消这些操作才能正常工作。
session_start();
session_name("test");