由于某种原因,每当我尝试向数组中添加某些内容时,它只会覆盖索引0,而不是覆盖索引1、2等...
这是我的代码
//Saved names
session_start();
$saved_names = array();
$_SESSION['saved_names'] = $saved_names;
if($_GET['saved_name']){
$saved_name = $_GET['saved_name'];
$saved_names[] = $saved_name;
}
echo '<pre>', print_r($saved_names, true), '</pre>';
答案 0 :(得分:3)
$_SESSION['saved_names'] = $saved_names;
这行正确吗?你是说
$saved_names = $_SESSION['saved_names'];
您正在重置会话数组并仅保存一个元素,该数组将始终具有长度1。
答案 1 :(得分:0)
session_start();
if($_GET['saved_name']){
$_SESSION['saved_names'][] = $_GET['saved_name'];
}
echo '<pre>', print_r($_SESSION['saved_names'], true), '</pre>';
答案 2 :(得分:0)
其他答案还可以,但是我更喜欢这种解决方案,它还会检查会话是否刚刚开始(因此尚未设置$_SESSION['saved_names']
):
<?php
session_start();
$_SESSION['saved_names'] = isset( $_SESSION['saved_names']) ? $_SESSION['saved_names'] : [];
if($_GET['saved_name']){
$_SESSION['saved_names'][] = $_GET['saved_name'];
}
echo '<pre>', print_r($_SESSION['saved_names'], true), '</pre>';
?>
修改
@elitepc解决方案(如他所说)不起作用,因为
$saved_names = array(); /empty array
$saved_names = $_SESSION['saved_names']; / <- it has not been declared also will never update
然后
$saved_name = $_GET['saved_name'];
$saved_names[] = $saved_name;
因此,基本上每次它只创建一个空数组并将其放入$_GET
值内。
您必须检查会话变量是否已初始化,并以$_GET
值进行更新