php - 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']
是具有唯一值的按钮。
有人可以看到我在这里做错了吗?
亲切的问候
解决方案
如果之前未设置,您只会添加到$_SESSION['test']
数组中。$_SESSION['test']
因此,您需要始终向会话数组添加一个事件,并且仅在之前未设置会话数组的情况下初始化会话数组
session_start();
// ...
if(isset($_POST['process'])) {
if(!isset($_SESSION['test'])) {
$_SESSION['test'] = array();
}
$_SESSION['test'][] = $_POST['process'];
}
手册中的注意事项
如果您使用 array_push() 向数组添加一个元素,最好使用 $array[] = 因为这样就没有调用函数的开销。
推荐阅读
- c# - c#:没有直接变量引用的类返回值
- python - ImportError:无法导入名称“PackageFinder”
- javascript - 使用 ES6 代理替换原型时超出最大调用堆栈大小
- operators - Liquid:如何将运算符的输出分配给变量?
- c# - Web API 通用操作
- arrays - 如何使用 Invoke-Expression 在模板中使用运行命令?
- java - 2 OnClickListeners for one Button 无法解析 OnClick 监听器
- javascript - 修复粘性导航栏在向上滚动时出现的位置
- javascript - JavaScript:分配给 onload 事件的函数何时执行?
- java - 在通过 zxing 库扫描之前在条码图像上添加过滤器