2016-05-16 4 views
2

Hallo Ich bin ein bisschen ein Neuling hier - also bitte bitte mit mir. Ich versuche eine WishList zu erstellen - ähnlich einem Einkaufswagen, aber ohne das Zahlungs-Gateway. Sowieso.Fügen Sie kein Element zu einem Sitzungs-Array hinzu, wenn es bereits existiert

Ich habe den folgenden Code, der ein Element in einem Array hinzufügt, wenn die Schaltfläche Hinzufügen Wunschliste geklickt wird

if (isset($_GET['add'])) { 
    $ITEM = array( 
    'name' => $_GET['add']  
); 

    $_SESSION['WISH_LIST'][] = $ITEM; 
    header('Location: ' . $_SERVER['PHP_SELF']); 
} 

Ich möchte es so funktioniert, dass das Element hinzugefügt wird, nicht wenn es schon da ist.

ich versuchte, diesen

if (isset($_GET['add'])){ 
    $ITEM = array( 
    'name' => $_GET['add']  
); 

    if (in_array($_GET['add'], $ITEM)) { 
    echo "Already Added"; 
    } else { 
    $_SESSION['WISH_LIST'][] = $ITEM; 
    header('Location: ' . $_SERVER['PHP_SELF']); 
    } 
} 

Aber das macht nie den Punkt - ich bekomme immer den ‚bereits hinzugefügt‘ Text.

Antwort

3

Sie müssen prüfen, was in der Sitzung vorhanden ist, nicht die $ Array Items:

if (isset($_GET['add'])) { 
    $ITEM = array(
     'name' => $_GET['add'] 
    ); 

    if (in_array($ITEM, $_SESSION['WISH_LIST'])) { 
     echo "Already Added"; 
    } else { 
     $_SESSION['WISH_LIST'][] = $ITEM; 
     header('Location: ' . $_SERVER['PHP_SELF']); 
    } 
} 

Es könnte schöner sein Code einrücken auch.

+0

das scheint nicht zu funktionieren –

+0

in_array() nimmt die Nadel Argument zuerst, so 'in_array ($ ITEM, $ _SESSION ['WISH_LIST'])' – iainn

+0

ah ja, du bist richtig. Hab das nicht bemerkt. Wird bearbeiten. – Farkie

Verwandte Themen