当我添加到PHP数组时,它一直被覆盖。。。为什么?

当我添加到PHP数组时,它一直被覆盖。。。为什么?,php,arrays,Php,Arrays,出于某种原因,每当我尝试向数组中添加某些内容时,它都会覆盖索引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[] =

出于某种原因,每当我尝试向数组中添加某些内容时,它都会覆盖索引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>';
//保存的名称
会话_start();
$saved_names=array();
$\u会话['saved\u names']=$saved\u names;
如果($\u获取['saved\u name']){
$saved_name=$_GET['saved_name'];
$saved_name[]=$saved_name;
}
回显“”,打印($saved\u names,true),“”;
这行对吗?你是说

session_start();

if($_GET['saved_name']){

    $_SESSION['saved_names'][] = $_GET['saved_name'];
}
echo '<pre>', print_r($_SESSION['saved_names'], true), '</pre>';
如果重置会话数组并仅保存一个元素,则该数组的长度始终为1

<?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>';
?>
这行对吗?你是说

session_start();

if($_GET['saved_name']){

    $_SESSION['saved_names'][] = $_GET['saved_name'];
}
echo '<pre>', print_r($_SESSION['saved_names'], true), '</pre>';
您正在重置会话数组并仅保存一个元素,该数组的长度始终为1。

session\u start();
<?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>';
?>
如果($\u获取['saved\u name']){ $\u会话['saved\u name'][=$\u GET['saved\u name']; } 回显“”,打印($会话['saved\u names',true),“”;
会话启动();
如果($\u获取['saved\u name']){
$\u会话['saved\u name'][=$\u GET['saved\u name'];
}
回显“”,打印($会话['saved\u names',true),“”;

其他答案还行,但我更喜欢这个解决方案,它还检查会话是否刚刚启动(因此,
$\u会话['saved\u names']
尚未设置):

因此,基本上每次它只是创建一个空数组并放入
$\u GET
值中


您必须检查会话变量是否已初始化,如果使用
$\u GET
value更新它,其他答案可以,但我更喜欢此解决方案,它还检查会话是否刚刚启动(因此
$\u会话['saved\u names']
尚未设置):

因此,基本上每次它只是创建一个空数组并放入
$\u GET
值中


您必须检查会话变量是否已初始化,如果使用
$\u GET
value

更新它,您只需在此代码中添加一项。您是否试图在会话中维护数组并在后续请求中添加其他项?请查看array_push()您在这段代码中只添加了一项。您是否试图在会话中维护阵列并在后续请求中添加其他项目?请查看阵列推送()^此操作有效!我试过其他方法,但问题仍然存在。。我得到的长度永远不会超过一个我已经更新了我的答案,并解释了为什么^!我试过其他方法,但问题仍然存在。。我的答案的长度永远不会超过一个。我已经更新了我的答案,解释了为什么这段代码可以回答这个问题,提供了关于它如何以及为什么解决这个问题的额外上下文,这将提高答案的长期价值。虽然这段代码可以回答这个问题,提供关于如何解决问题以及为什么解决问题的附加上下文将提高答案的长期价值。
$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;