【问题标题】:array_push() expects parameter 1 to be array, null given php error messagearray_push() 期望参数 1 为数组,给定 php 错误消息为空
【发布时间】:2018-06-05 20:33:38
【问题描述】:

我正在尝试使用 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' => implode(" ", $_SESSION['messages'])

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

【问题讨论】:

  • 这意味着$_SESSION['messages']没有定义
  • 但是我已经定义了,你可以在我的代码顶部看到。
  • 我想你没有。
  • @u_mulder 我猜你不知道是什么意思?!我在这里粘贴了我的代码,它就是这样。解释一下你在说什么男人
  • 如果您考虑一下您的代码,您可以理解 也许 session_status() == PHP_SESSION_NONEfalse 并且您在 if 中的代码不会被执行。不是吗?

标签: php arrays session


【解决方案1】:

您收到错误:警告: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['messages'] = array();不会被执行。

你需要做的是,检查一个会话是否已经开始,如果没有,就开始一个。

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

这将检查您是否在脚本中的某个位置调用了 session_start()。

然后,添加这一行:

if(!isset($_SESSION['messages']))
    $_SESSION['messages'] = array();

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 2016-09-24
    相关资源
    最近更新 更多