PHP in_array和array_key_exists不适用于SESSION

时间:2016-05-19 02:10:38

标签: php session

<?php   
session_start();
 if(!empty($_SESSION["cart_item"])) {

            if(in_array($_GET['code'],$_SESSION["cart_item"])){
                echo "hiiii";
            }else{
                echo "byeee";}
        }else {
            $itemArray = array($_GET['code']=>array('pcode'=>$_GET['code']));
            $_SESSION["cart_item"] = $itemArray;
        }
?>

我试图使用in_array检查$ _SESSION [cart_item]中是否有类似的商品商店,但它只返回false,尽管我确保该值确实存储在$ _SESSION中。

当我进行一些检查时,由于我的$ _SESSION有一个多维数组,我应该使用array_key_exists,这是我的代码

if(array_key_exists($_GET['code'],$_SESSION["cart_item"])){
            echo "hiiii";
        }else{
            echo "byeee";}

但它仍然返回false。有谁可以指出我的错误?

顺便说一句,我是新手,并提前致谢。

1 个答案:

答案 0 :(得分:2)

您需要将if(!empty($_SESSION["cart_item"]))更改为if(isset($_SESSION["cart_item"]))。同时检查$ _SESSION是否是一个简单的数组,为了与in_array匹配,你需要有像i assign这样的数组。

当你提到_since我的$ SESSION有一个多维数组时,如果你使用的是in_array,请确保你的数组是一个维度。

让变量喜欢这个:

$_SESSION["cart_item"] = array('1', '2', '3');
$_GET['code'] = '3';

if(isset($_SESSION["cart_item"])) { 
    if(in_array($_GET['code'], $_SESSION["cart_item"])){
        echo "hiiii";
    }else{
        echo "byeee";}
}else {
    $itemArray = array( $_GET['code'] => array('pcode'=> $_GET['code']) );
    $_SESSION["cart_item"] = $itemArray;
}

结果: hiiii

现在是时候使用array_key_exists

让我们改变阵列:

$_SESSION["cart_item"] = array('1' => array(6, 7, 8), '2' => array(2, 4, 6), '3' => array(1, 5, 9));

if(array_key_exists($_GET['code'], $_SESSION["cart_item"])){
    echo "hiiii from key exists";
}else{
    echo "byeee";
}

结果:来自密钥的hiiii

  

注意:我认为您了解如何使用以及在何处使用in_array   和array_key_exists