首页 > 解决方案 > Array_push 推送不可见元素,仅在第二次推送时有效

问题描述

我注意到我的array_push 有问题。

所以我在做什么:我有一个网站,其中有一些具有特定值的按钮。

每个值都从数据库中获取。

我有一个名为 test 的会话,它被转换为一个数组(将多个存储在同一个数组中)

每次单击其中一个按钮时,该特定按钮的值都会被推送到数组中。

但是,我只能看到它已在第二次尝试时被推送。

[test] => Array( [0] => 21304 )

这是我看到的,第二次尝试后。但是我的数组计数表示该数组中有 2 个元素。

这是我的代码:

if(isset($_POST['process'])) {
    if(!isset($_SESSION['test'])) {
        $_SESSION['test'] = array();
        $array_merge = array_push($_SESSION['test'], $_POST['process']);
    }
}

$_POST['process']是具有唯一值的按钮。

有人可以看到我在这里做错了吗?

亲切的问候

标签: phparrays

解决方案


如果之前未设置,您只会添加到$_SESSION['test']数组中。$_SESSION['test']

因此,您需要始终向会话数组添加一个事件,并且仅在之前未设置会话数组的情况下初始化会话数组

session_start();

// ...

if(isset($_POST['process'])) {
    if(!isset($_SESSION['test'])) {
        $_SESSION['test'] = array();
    }
    $_SESSION['test'][] = $_POST['process'];
}

手册中的注意事项

如果您使用 array_push() 向数组添加一个元素,最好使用 $array[] = 因为这样就没有调用函数的开销。


推荐阅读