警告:in_array()期望参数2为数组,给定为null

时间:2017-01-10 09:18:16

标签: php arrays session

尝试将数据添加到会话时(并检查它是否已存在),我收到以下警告。

  

警告:in_array()期望参数2为数组,给定

为null

我该如何解决这个问题?

它所指的代码:

if(isset($_GET['product']) && !in_array($_GET['product'], $_SESSION['product'])){
    $_SESSION['product'][] = $_GET['product'];
}

在清理的浏览器上添加第一个产品时,我只收到此警告。当我删除它并添加另一个产品时,警告消失了。如果我添加第二个产品也一样。

4 个答案:

答案 0 :(得分:2)

警告说这一切。这个参数为空:

 $_SESSION['product']

确保在使用之前设置它。示例:

if(isset($_SESSION['product']) && isset($_GET['product']) &&  !in_array($_GET['product'], $_SESSION['product'])){
        $_SESSION['product'][] = $_GET['product'];
    }

答案 1 :(得分:1)

您的$_SESSION['product']为空。 试试这个,

if(!empty($_SESSION['product']) && isset($_GET['product']) && !in_array($_GET['product'], $_SESSION['product'])){
    $_SESSION['product'][] = $_GET['product'];
}

它应该有用。

答案 2 :(得分:1)

在使用isset之前检查是否设置了值,并使用is_array检查给定变量是否为数组。

if(isset($_GET['product']) && is_set($_SESSION['product']) && is_array($_SESSION['product']) && !in_array($_GET['product'], $_SESSION['product'])){
    $_SESSION['product'][] = $_GET['product'];
}

答案 3 :(得分:0)

你应该总是对数组进行检查

isset( $_SESSION['product']) in your is condition before & condition