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

问题描述:

尝试向会话添加数据(并检查它是否已存在)时,出现以下警告。警告:in_array()期望参数2为数组,空给出

警告:in_array()预计参数2是数组,空给出

我该如何解决这个问题?

它指的是代码:

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

在清洁的浏览器中添加的第一个产品的时候,我只得到这样的警告。当我删除它并添加另一个产品时,警告消失了。同样如果我添加第二个产品。

+1

似乎'$ _SESSION [ '产品']'这么想的包含任何数据。尝试打印'$ _SESSION ['product']' –

+2

'$ _SESSION ['product']'为空 –

+0

我可以知道哪一个返回数组$ _SESSION ['product']或$ _GET ['product']? –

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

$_SESSION['product'] 

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

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

谢谢,简单的解决方案:)我会在10分钟内接受。 – twan

+0

@twan很高兴我能帮忙:) – malutki5200

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

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

它应该工作。

检查该值是否在与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']; 
} 

你应该总是申请支票阵列

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