Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Usuwanie tablicy z tablicy wielowymiarowej
misteroous
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.11.2019

Ostrzeżenie: (0%)
-----


Witam serdecznie po raz drugi (IMG:style_emoticons/default/smile.gif)

Tym razem mam problem a mianowicie gdy mam tablice wielowymiarową:
  1. [0] => Array ( [opis] => Wołowina w czerwonym curry [cena] => 25 [ilosc] => 1 )
  2. [1] => Array ( [opis] => Kurczak Kung Pao [cena] => 15 [ilosc] => 1 )
  3. [2] => Array ( [opis] => Kurczak Kung Pao [cena] => 15 [ilosc] => 1 )
  4. [3] => Array ( [opis] => Wołowina w czerwonym curry [cena] => 25 [ilosc] => 1 )
  5. [4] => Array ( [opis] => Wieprzowina w sosie teryaki [cena] => 50 [ilosc] => 1 )
  6. [5] => Array ( [opis] => Wieprzowina w sosie teryaki [cena] => 50 [ilosc] => 1 )
  7. )


Potrzebuje usunąć całą tablicę np. [0] i otrzymać:
  1. [0] => Array ( [opis] => Kurczak Kung Pao [cena] => 15 [ilosc] => 1 )
  2. [1] => Array ( [opis] => Kurczak Kung Pao [cena] => 15 [ilosc] => 1 )
  3. [2] => Array ( [opis] => Wołowina w czerwonym curry [cena] => 25 [ilosc] => 1 )
  4. [3] => Array ( [opis] => Wieprzowina w sosie teryaki [cena] => 50 [ilosc] => 1 )
  5. [4] => Array ( [opis] => Wieprzowina w sosie teryaki [cena] => 50 [ilosc] => 1 )
  6. )



Oto mój kod:
  1. function usun_produkt($akcesoria)
  2. {
  3. if (!isset($_POST['usun_produkt'])) {
  4. $akcesoria=$_SESSION['koszyk']['akcesoria'];
  5.  
  6. for($k=0;$k<count($akcesoria);$k++)
  7. {
  8. unset($akcesoria[$k]);
  9. }
  10. }
  11. }

ale nie działa, tzn. nie usuwa nic.
Ale gdy kod wygląda tak:
  1. function usun_produkt($akcesoria)
  2. {
  3. if (!isset($_POST['usun_produkt'])) {
  4. $akcesoria=$_SESSION['koszyk']['akcesoria'];
  5.  
  6. for($k=0;$k<count($akcesoria);$k++)
  7. {
  8. foreach(array_keys($akcesoria) as $k) {
  9. unset($akcesoria[$k][1]);
  10. }
  11. print_r($akcesoria[$k]); <------------------------- Array ( [0] => Array ( [opis] => Wieprzowina w sosie teryaki [cena] => 50 [ilosc] => 1 )
  12.  
  13. }
  14. }
  15. }

Wtedy usuwa ale tylko to co jest w print_r tzn.
  1. Array ( [0] => Array ( [opis] => Wieprzowina w sosie teryaki [cena] => 50 [ilosc] => 1 )

Ale nie usuwa tego z tablicy głównej.

Pomoże ktoś przerobić to tak, aby działało?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
misteroous
post
Post #2





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.11.2019

Ostrzeżenie: (0%)
-----


ok problem z indeksowaniem mam z głowy dzięki funkcji array_values
  1. $akcesoria=$_SESSION['koszyk']['akcesoria'];

zmieniłem na:
  1. $akcesoria=array_values($_SESSION['koszyk']['akcesoria']);

i działa.
Czy możesz mi wytłumaczyć @Tomplus lub którykolwiek z użytkowników jak za pomocą przycisku
  1. <form action="" method="post"><button type="submit" name="usun_produkt" value='$jakasfunkcja'>-</button></form>

usuwać tylko tablice z danym opisem (nazwą?). Tzn. zamiast tablicy z indeksem [0] usuwało jedną tablicę z opisem "$opis" która ma z góry nie określony indeks.

Pozdrawiam i dziękuję za zainteresowanie tematem (IMG:style_emoticons/default/smile.gif)

Witam i proszę o pomoc
Zrobiłem tak i działa ale usuwa produkt po ID dopiero po 2 kliknięciu, a jak chce usunąć inny produkt to najpierw usuwa poprzedni ID a dopiero po drugim kliknięciu właściwy ID.
Oto kod:
  1. function usun_koszyk($akcesoria)
  2. {
  3. if (isset($_POST['usun_koszyk'])) {
  4. $idd=$_POST['idproduktu'];
  5. foreach ( $akcesoria as $t => $item) {
  6. if ($item['id'] == $idd) {
  7. unset( $_SESSION['koszyk']['akcesoria'][$t]);
  8. $_SESSION['koszyk']['akcesoria']=array_values($_SESSION['koszyk']['akcesoria']);
  9. break;
  10. }
  11. }
  12. }
  13. }


Proszę powiedzcie co jest nie tak ;/?

Ten post edytował misteroous 5.12.2019, 01:26:19
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 4.10.2025 - 02:08