array_push不会在PHP中向数组添加元素

时间:2018-12-29 17:39:37

标签: php arrays session get session-variables

我正在使用会话,并试图创建一个存储临时数据的应用程序(目前),即时消息我使用此代码向“ userCourses”会话数组添加“课程”:

$_SESSION['userCourses'] = array(
    $_SESSION['siteCourses'][0],
);
if(isset($_GET['id'])){
    $id = $_GET['id'];
    array_push($_SESSION['userCourses'], $_SESSION['siteCourses'][$id]);
}

我的href是这样写的:

<a class="green" href="<?php echo 'coursesDisplay.php?id='.$course[2]; ?>" >Add Course</a>

其中$ course [2]代表课程的ID(将其视为自动增量int,它对于每个课程都是独立的)

现在,当我单击链接时,它确实会添加到我的数组中,但是当我在没有id的获取请求的情况下转到该站点时,这部分是

...url/file.php?id=1

它不显示课程,此外,每当我添加另一门课程时,尽管将其添加到前一门课程,前一门课程都会被覆盖。

我的逻辑有缺陷吗(或愚蠢),我缺少什么吗?使用会话是否可能,或者我需要为此使用数据库?我对PHP相当陌生,我想在移至数据库之前使用会话制作一个简单的应用程序。

注意:我没有忘记放置start_session();。除了这些文件之外,我只是想保持问题整洁,不包括整个文件,但是如果有人需要我可以将整个代码放在驱动器或其他东西上,他们可以下载它。

1 个答案:

答案 0 :(得分:1)

好像您每次运行脚本时都重新初始化会话变量。也许先检查会话变量是否为空,然后才初始化。像这样:

if (empty($_SESSION['userCourses'] )) 
{ 
    $_SESSION['userCourses'] = array( $_SESSION['siteCourses'][0], ); 
}