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%)
-----


Nie za bardzo rozumiem... Jeżeli dodaje tablice to działa dobrze ale kiedy już odejmuje to działa za ponownym wysłaniem bo za pierwszym razem usuwa poprzednie id. Mam nadzieje, że mnie rozumiesz.
Oto kod z koszyka:
  1. <?php
  2. do_koszyka(false);
  3. $akcesoria=$_SESSION['koszyk']['akcesoria'];
  4. usun_koszyk($akcesoria);
  5.  
  6. print_r($akcesoria);
  7.  
  8. echo '<br />';
  9. if (count($akcesoria)===0)
  10. {
  11. echo 'Twoje zamówienie jest puste!';
  12. return;
  13. }
  14.  
  15.  
  16. $l=1;
  17. $newKsiazki = [];
  18. if (count($akcesoria)>0)
  19. {
  20.  
  21.  
  22. foreach ($akcesoria as $akcesoria) {
  23. $opis = $akcesoria['opis'];
  24.  
  25. if (!isset($newKsiazki[$opis])) {
  26. $newKsiazki[$opis] = [
  27. 'id' => $akcesoria['id'],
  28. 'cena' => $akcesoria['cena'],
  29. 'ilosc' => 0
  30. ];
  31. }
  32.  
  33. $newKsiazki[$opis]['ilosc'] += $akcesoria['ilosc'];
  34.  
  35. }
  36. echo ' <br />';
  37. foreach ($newKsiazki as $opis => $akcesoria)
  38. {
  39. echo '<form method="post">'.($l++).'. <strong>'. $opis.'</strong>, cena: <strong><span style="color:brown">' .$akcesoria['cena'].'</span> zł</strong>'.', ilość: <strong>'.$akcesoria['ilosc'].'</strong>','&nbsp
  40.  
  41. <input type="hidden" name="id0" value='.$akcesoria['id'].' /><input type="checkbox" name="towary[]" value="000000'. $opis.'" checked hidden /><input type="submit" value="+" name="do_koszyka" /><input type="hidden" name="cena0" value='.$akcesoria['cena'].' /><input type="hidden" name="ile0" value="1" />
  42. <input type="hidden" name="idproduktu" value='.$akcesoria['id'].' /><button type="submit" name="usun_koszyk">-</button></form>
  43.  
  44.  
  45. ',"\n";
  46. }
  47. }
  48. ?>

A tu jeszcze raz funkcja usun_koszyk
  1. function usun_koszyk($akcesoria)
  2. {
  3. if (isset($_POST['usun_koszyk'])) {
  4. $idd=$_POST['idproduktu'];
  5. $akcesoria=$_SESSION['koszyk']['akcesoria'];
  6. foreach ( $akcesoria as $t => $item) {
  7. if ($item['id'] == $idd) {
  8. unset( $_SESSION['koszyk']['akcesoria'][$t]);
  9. $_SESSION['koszyk']['akcesoria']=array_values($_SESSION['koszyk']['akcesoria']);
  10. break;
  11. }
  12. }
  13. }
  14. }


@Tomplus mógłbyś to jaśniej wytłumaczyć? (O ile się da)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 12:18