2017-01-11 5 views
0

Ich habe eine Schaltfläche neben all meinen 'Shop-Artikel', die einen der Shop-Artikel entfernen kann, aber ich brauche es nur zu entfernen, und nicht das gesamte Array los Ich dachte, das wäre möglich, indem ich eine break-Anweisung verwende, wenn ich die Nummer gefunden habe, die ich entfernen möchte, aber es entfernt alle Zahlen.Entfernen einer bestimmten Nummer aus einem Session-Array in PHP

  if (isset($_GET['remove']) && isset($_SESSION['shopitems'])) { 
      if (in_array($_GET['remove'], $_SESSION['shopitems'])) { 
       for ($i = 0; $i < sizeof($_SESSION['shopitems']); $i++) { 
        if ($_SESSION['shopitems'][$i] == $_GET['remove']) { 
         $shopArray = $_SESSION['shopitems']; 
         if(sizeof($shopArray) == 1) { 
          $_SESSION['shopitems'] = null; 
          $_SESSION['added'] = null; 
         } else { 
          array_splice($shopArray, $i, $i); 
          $_SESSION['shopitems'] = $shopArray; 
         } 
         break; 
        } 
       } 
      } 
     } 

Hier prüfe ich, ob die URL der remove Variable und die Sitzung enthält gesetzt ist, sobald ich dies getan habe, ich überprüfen, ob das Array die Nummer enthält, die in der URL gesetzt wird, wenn also werde ich anfangen eine for-Schleife und prüfen, ob der Schlüsselindex der Session-Shop-Elemente gleich der URL-Variable ist, wenn ja, ich möchte sie entfernen, aber wenn ich array_splice, plötzlich sind sie alle weg, ist dies wegen der Funktion, die ich verwende ? Oder wird der Break nicht korrekt ausgeführt?

+0

'$ _SESSION [ 'shopitems'] = null' alle shopitems Array löschen wird. Sie müssen das gewünschte Element nur etwas wie diese $ _SESSION ['shopitems'] löschen [$ i] = null' – developer

Antwort

1

Warum versuchen Sie nicht array_search() und unset()? Es ist einfacher, einen Blick auf den Code unten ein und passen es an Ihre Situation:

$array = [1, 5, 6, 12]; 
$wantToRemove = 5; 

$key = array_search($wantToRemove, $array); 
unset($array[$key]); 

var_dump($array); 
+0

Vielen Dank für Ihre Antwort, ich dachte nicht über die Verwendung der array_search-Funktion, ich begann vor kurzem mit PHP so es ist immer noch etwas neu für mich! – ThatsAudio

+0

Lebe und lerne :) Deshalb sind wir alle hier – motanelu

0

können Sie formatieren Sie Ihre $_SESSION['shopitems'] wie folgt aus:

$_SESSION['shopitems'] = array (
    "item_id" => "item_info", 
    "item2_id" => "item2_info", 
    ... 
) 

und tun unset($_SESSION['shopitems'][$_GET['remove']]).

könnte Ihr Code sein:

if (isset($_GET['remove']) && isset($_SESSION['shopitems'])) 
    if (isset($_SESSION['shopitems'][$_GET['remove']])) 
     unset($_SESSION['shopitems'][$_GET['remove']]) 
Verwandte Themen