收到警告:array_push() 期望参数 1 为数组,字符串给定 /function.php

Getting Warning: array_push() expects parameter 1 to be array, string given /function.php

我对编码不太友好,浪费了将近 5 天的时间来寻找解决方案。最近更改了托管,然后它开始发生。同时也得到了其他警告,如

"Warning: Cannot modify header information - headers already sent by (output started at /var/www/u1524808/genericpanda.com/wp-content/themes/pillshope/functions.php:278) in /var/www/u1524808/genericpanda.com/wp-login.php on line 400"

因此我无法登录 WordPress 仪表板。确实面临着困难时期。这是我收到错误的函数。真的需要帮助,提前谢谢你!!!

function register_my_session() {
    if (!session_id()) {
        session_start();
    }
    $_SESSION['cart']='';
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
       array_push($_SESSION['cart'], $_POST);
    }
}
add_action('init', 'register_my_session');

您正在使用 array_push 但您的 $_SESSION['cart'] 是一个字符串,因为您将其初始化为 ' ' 但您应该使用 $_SESSION['cart'] = array ()

两件事

  1. 输出已经发送,所以没有使用 session_start() 但是如果你想添加并绕过警告写它像

    @session_start()

  2. array_push($_SESSION['cart'], $_POST);

$_SESSION 可以是一个数组,$_SESSION['cart'] 具有空字符串,因为您已为其分配空引号 ('')

$_SESSION['cart'] = ''

所以当您尝试将数据推送到 $_SESSION['cart'] 时,它会给您警告

你可以写 $_SESSION['cart'] = [] 然后你的代码就可以工作了 或

array_push($_SESSION['cart'], $_POST); 

可以

array_push($_SESSION, $_POST); 

但后面的部分可以擦除所有其他 SESSON 数据,所以我建议您应该使用第一个替代方案替换

$_SESSION['cart'] = '' 

$_SESSION['cart'] = [] 

然后尝试。