簡體   English   中英

PHP in_array和array_key_exists不適用於SESSION

[英]PHP in_array and array_key_exists not working for 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]中是否有類似的商品存儲,但是盡管我確保該值確實存儲在$ _SESSION中,但它僅返回false。

當我進行一些檢查時,由於我的$ _SESSION具有多維數組,因此我應該使用array_key_exists,這是我的代碼

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

但是它仍然返回false。 誰能指出我的錯誤?

順便說一句,我對此並不陌生,在此先感謝。

您需要將if(!empty($_SESSION["cart_item"]))更改為if(isset($_SESSION["cart_item"])) 還檢查$ _SESSION是否為簡單數組,為了與in_array匹配,您需要像我分配的數組。

正如您提到的_si因為我的$ 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_arrayarray_key_exists以及在哪里使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM