我有点迷路了。
这就是我想要做的。 我有一个会话,称为“测试”,每次设置$ _POST ['process']时,我都将会话设置为数组。
$ _ POST ['process']包含一个从数据库表中获取的整数。
这是我的代码:
if(isset($_POST['process']))
{
$_SESSION['test'] = array();
$array_merge = array_push($_SESSION['test'], $_POST['process']);
}
它是第一次工作,结果如下:
[test] =>数组 ( [0] => 21311 )
我期望它会创建一个新密钥,并将其分配给从$ _POST ['process']获取的另一个值-但它只会覆盖0密钥。
我在这里做什么错了?
亲切的问候
答案 0 :(得分:1)
在您的代码中,您正在编写#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QChart>
#include <QLineSeries>
#include <QMainWindow>
#include <QValueAxis>
#include <QtCharts/QChart>
#include <QtCharts/QLineSeries>
QT_CHARTS_USE_NAMESPACE
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
QChart* chart = nullptr;
QLineSeries* serie = nullptr;
int threshold = 5;
private slots:
void onAddPointButtonClicked();
void onPointAdded(int index);
};
#endif // MAINWINDOW_H
,它将#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent), ui(new Ui::MainWindow) {
ui->setupUi(this);
chart = new QChart;
serie = new QLineSeries(this);
connect(ui->bt_addPoint, SIGNAL(clicked()), this, SLOT(onAddPointButtonClicked()));
connect(serie, SIGNAL(pointAdded(int)), this, SLOT(onPointAdded(int)));
chart->legend()->hide();
chart->addSeries(serie);
ui->graphicsView->setChart(chart);
}
MainWindow::~MainWindow() {
delete ui;
}
void MainWindow::onAddPointButtonClicked() {
serie->append(0, 1);
}
void MainWindow::onPointAdded(int index) {
while (serie->points().length() >= threshold)
serie->remove(0);
}
的值重置为一个空数组。因此,它删除了您以前的值,并放入了新值。
要解决此问题,请检查是否已设置$_SESSION['test'] = array();
,如果尚未设置$_SESSION['test']
,则只需插入新值即可。
完整示例:
$_SESSION['test']
答案 1 :(得分:0)
老实说,这是一种精确的情况,其中使用array_push()
相对于其替代的方括号语法是不利的。
array_push()
要求您提前声明空数组; []
不会并且它是无功能的,并且编码更简短。
此外,我几乎100%地确定您实际上不希望在推送后知道新元素的数量。 PHP Manual says:
返回数组中新的元素数。
...因此,如果您确实想知道新的计数,则可以将变量从$array_merge
重命名为$array_size
或$array_count
或$array_length
。
我知道我不想写一个额外的条件,只是声明一个空变量,然后使用一个函数添加一个新元素,尤其是当它可以在一行中完成时
if(isset($_POST['process'])) {
$_SESSION['test'][] = $_POST['process']; // all done
}
这将在第一次和每次需要的时候起作用。