2016-05-19 6 views
1
<?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; 
     } 
?> 

Ich versuche, zu überprüfen, ob es ein ähnlicher Artikel Store in dem $ _SESSION ist [cart_item] mit in_array aber nur zurückgeben mich falsch, obwohl ich sicher, dass der Wert in der Tat in $ _SESSION speichern.PHP in_array und array_key_exists arbeiten nicht für SESSION

Wie ich einige Kontrollen durchlaufen, da mein $ _SESSION ein mehrdimensionales Array hat, sollte ich array_key_exists verwenden und hier ist mein Code für diese

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

Aber es gibt immer noch falsch. Kann jemand meinen Fehler aufzeigen?

BTW Ich bin neu und danke im Voraus.

+0

teilen Sie Ihr '$ _SESSION [" cart_item "]' Array. –

+0

ist in der else {} von meinem ersten Teil der Codes – kojh

+3

besser ändern 'if (! Leer ($ _ SESSION [" cart_item "]))' zu 'if (isset ($ _ SESSION [" cart_item "])) ' –

Antwort

2

Sie müssen zu if(isset($_SESSION["cart_item"])) ändern. Überprüfen Sie auch, ob es sich bei $ _SESSION um ein einfaches Array handelt oder nicht. Um es mit in_array abzustimmen, müssen Sie ein Array wie ich zuweisen.

Wie Sie erwähnen, _since mein $ SESSION hat ein multidimensionales Array, SO stellen Sie sicher, dass Ihr Array eine einzige Dimension ist, wenn Sie in_array verwenden. diese

die Variablen lassen mag:

$_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; 
} 

Ergebnis: hiiii

Jetzt seine Zeit array_key_exists zu verwenden.

Lets Array Änderung:

$_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"; 
} 

Ergebnis: hiiii von Schlüssel vorhanden

Hinweis: Ich glaube, Sie verstehen, wie und wo zu verwenden, verwenden in_array und array_key_exists.

+1

Hallo, ich glaube, ich fand die Problem. Als ich versuchte, einen Wert in das multidimensionale Array in SESSION zu speichern, und ich bekomme var_dump, um mir die Ausgabe zu zeigen, das ist was ich Array (1) {[333] => Array (1) {["pcode"] => Zeichenfolge (3) "333"}}. Aber wenn ich versuche, mehr in die Sitzung zu speichern, wird es dieses Array (2) {[0] => array (1) {["pcode"] => string (3) "333"} [1] => array (1) {["pcode"] => string (3) "444"}} Der Schlüsselwert hat den Wert, den ich ihm zugewiesen habe, nicht gespeichert, sondern stattdessen auf den Standardwert 0,1,2 .... – kojh