array_push()期望参数1为数组,null给出php错误消息

时间:2017-12-23 16:43:26

标签: php arrays session

我正在尝试使用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'])

那么如何解决这些问题呢?

1 个答案:

答案 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();

希望它有所帮助。