2017-08-26 5 views
1

Ich erstellte two-dimensional array der Sitzung. Wenn ein Benutzer ein Element eingeben kann und wenn er/sie auf ADD button klickt, wird eine dieses Elements in eine Sitzung namens item_names eingefügt. Jetzt versuche ich und kann nicht unset ein bestimmtes Element, wenn ein Benutzer auf delete button klickt, die es unique id darauf hat. Ich habe festgestellt, dass die Funktion unset_userdata() assoziative Array nicht bereits unterstützen, als was ich versuche zu erreichen. Gibt es irgendwelche anderen Funktionen?Codeigniter - Unset-Sitzung in einem zweidimensionalen Array

Controller.php

public function delete_item(){ 
    $app_no = $this->input->post('app_no'); // product id of item 
    $items_session = $this->session->userdata('item_names'); 

    foreach ($items_session as $key => $value) { 
     if($value['product_id'] == $app_no){ 
      $this->session->unset_userdata($items_session[$key][$app_no]); 
     } 
    } 
    } 

Array Struktur

Array 
    (
     [0] => Array 
    (
     [product_id] => 201708010010 
     [product_name] => LADDER BRICK 
     [total_prod_price] => P50 
     [requestQty] => 1 
    ) 
    (
+1

zeigen Sie Ihre Array-Struktur –

+0

@Irfan aktualisiert Post – Dre

Antwort

1

Sie können den spezifischen Wert eines mehrdimensionalen Arrays in der Sitzung des Codeingiters nicht direkt aufheben. Sie müssen alle Session-Werte zu Variablen nehmen. Entarre den spezifischen Wert und setze die Variable erneut in der Sitzung, wie unten gezeigt:

 

    $items_session = $this->session->userdata('item_names'); 
    unset($items_session[$key][$app_no]); 
    $this->session->set_userdata('item_names',$items_session); 

Hoffe, das wird helfen.

+0

danke habe es nicht herausgefunden, ich habe dies bereits in meinem Add Button-Funktion! – Dre

+0

Ist es besser/schneller, die Variable $ _SESSION direkt zu manipulieren? Ich tue in diesem Fall immer, um zu vermeiden, Sitzungsdaten jedes Mal neu zu laden. Ich bin mir nicht sicher, wie groß dieser Einfluss auf das Gedächtnis ist. – qwertzman

+0

Ja, Sie können die Variable $ _SESSION direkt bearbeiten. Wenn Sie die Funktion unset_userdata() in der Sitzungsklasse des Codeigniters überprüfen, geschieht dies auch in foreach Loop. So können Sie entsprechend tun. –

0

Sie werden mit unset regelmäßig PHP abbiegen.

public function delete_item(){ 
    $app_no = $this->input->post('app_no'); // product id of item 
    $items_session = $this->session->userdata('item_names'); 

    foreach ($items_session as $key => $value) { 
     if($value['product_id'] == $app_no){ 
      unset($items_session[$key][$app_no]); 
     } 
    } 
    } 
+0

Ich habe versucht, mit Unset zuvor aber immer noch nicht funktioniert – Dre

Verwandte Themen