Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Usuwanie wpisów z tablicy wielowymiarowej.
Forum PHP.pl > Forum > Przedszkole
przemo191
Napisałem funkcje która powinna usuwać z kilku tablic ten sam indeks oraz tworzyć nową z nowymi indeksami i przypisanie jej do tablicy, niestety zamiast usuwać jeden indeks usuwa dwa.

Np, tablica wygląda tak:

  1. $koszyk = Array(
  2. 'lp' => array('1','2','0','4','','6'),
  3. 'id' => array('1','2','','','','6'),
  4. 'id_wyb' => array('1','0','','','5','6'),
  5. 'nr_wyb' => array('1','','3','','5','6'),
  6. 'id_tka' => array('1','','3','0','0','6'),
  7. 'nr_tka' => array('1','2','0','','5',''),
  8. 'ilosc' => array('0','','','0','0','60'),
  9. );


Funkcja usuwająca:
  1. function dell($lp){ // usuwanie produktu z tablicy | wywołanie dell(1);
  2. unset($_SESSION['koszyk']['lp'][$lp]);
  3. $x=array_values($_SESSION['koszyk']['lp']); // tworzymy nową tablice x z nowymi indeksami
  4. $_SESSION['koszyk']['lp']=$x; // przypisujemy tablicę x do tablicy koszyk
  5.  
  6. unset($_SESSION['koszyk']['id'][$lp]);
  7. $id=array_values($_SESSION['koszyk']['id']); // tworzymy nową tablice x z nowymi indeksami
  8. $_SESSION['koszyk']['id']=$id; // przypisujemy tablicę x do tablicy koszyk
  9.  
  10. unset($_SESSION['koszyk']['id_wyb'][$lp]);
  11. $id_wyb=array_values($_SESSION['koszyk']['id_wyb']); // tworzymy nową tablice x z nowymi indeksami
  12. $_SESSION['koszyk']['id_wyb']=$id_wyb; // przypisujemy tablicę x do tablicy koszyk
  13.  
  14. unset($_SESSION['koszyk']['nr_wyb'][$lp]);
  15. $nr_wyb=array_values($_SESSION['koszyk']['nr_wyb']); // tworzymy nową tablice x z nowymi indeksami
  16. $_SESSION['koszyk']['nr_wyb']=$nr_wyb; // przypisujemy tablicę x do tablicy koszyk
  17.  
  18. unset($_SESSION['koszyk']['id_tka'][$lp]);
  19. $id_tka=array_values($_SESSION['koszyk']['id_tka']); // tworzymy nową tablice x z nowymi indeksami
  20. $_SESSION['koszyk']['id_tka']=$id_tka; // przypisujemy tablicę x do tablicy koszyk
  21.  
  22. unset($_SESSION['koszyk']['nr_tka'][$lp]);
  23. $nr_tka=array_values($_SESSION['koszyk']['nr_tka']); // tworzymy nową tablice x z nowymi indeksami
  24. $_SESSION['koszyk']['nr_tka']=$nr_tka; // przypisujemy tablicę x do tablicy koszyk
  25.  
  26. unset($_SESSION['koszyk']['ilosc'][$lp]);
  27. $ilosc=array_values($_SESSION['koszyk']['ilosc']); // tworzymy nową tablice x z nowymi indeksami
  28. $_SESSION['koszyk']['ilosc']=$ilosc; // przypisujemy tablicę x do tablicy koszyk
  29. }


I po wywołaniu funkcji dell(1); usuwa mi ze wszystkich tablic wartość "2" oraz "3" która powinna zostać.
Usuwa po prostu te indeksy o które mi chodzi, oraz ten jeden dalej, który ma zostać, niestety nie wiem dlaczego, mogę liczyć na waszą pomoc?
erix
Przemodziłeś z kluczami w tablicy.

Zamiast zrobić tablicę, w której głównym kluczem jest "id", a podklucze "polami", to zrobiłeś na odwrót - pole sa kluczami i musisz kombinować. tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.