我正在尝试使用php将一些值从变量保存到我的会话数组中。
这是我的代码:
<?php
session_start();
if (session_status() == PHP_SESSION_NONE) {
$_SESSION['messages'] = array();
}
$request_params = array();
if (isset($_POST['send'])){
$pm = $_POST['message'];
array_push($_SESSION['messages'], $pm);
$request_params = [
'chat_id' => $id,
'text' => implode(" ", $_SESSION['messages'])
];
echo $_SESSION['messages'];
print_r($request_params);
}
?>
<div class="box-footer">
<form action="" method="post">
<div class="input-group">
<input type="text" name="message" placeholder="Write your direct message" class="form-control">
<span class="input-group-btn">
<input name="send" type="submit" class="btn btn-danger btn-flat"/>
</span>
</div>
</form>
</div>
这些是我尝试提交表单时出现的错误:
警告:array_push()期望参数1为数组,在第9行的new.php中给出为null
警告:implode():第12行在new.php中传递的参数无效
第9行:
array_push($ _ SESSION ['messages'],$ pm);
第12行:
'text'=&gt; implode(“”,$ _SESSION ['messages'])
那么如何解决这些问题呢?
答案 0 :(得分:0)
您收到错误:警告:array_push()期望参数1为数组,给定为null
因为永远不会设置$_SESSION['messages']
变量。
执行此部分代码时,
session_start();
if (session_status() == PHP_SESSION_NONE) {
$_SESSION['messages'] = array();
}
第一行开始一个新会话。因此session_status() == PHP_SESSION_NONE
永远不会是true
,因为session_status()
返回2而PHP_SESSION_NONE
等于1.因此,$ _SESSION [&#39; messages&#39;] =数组();不会被执行。
您需要做的是,检查会话是否已启动,如果没有,则启动会话。
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
这将检查脚本中是否有一个先前调用的session_start()。
然后,添加以下行:
if(!isset($_SESSION['messages']))
$_SESSION['messages'] = array();
希望它有所帮助。