Gast alexC++ Geschrieben 17. Juni 2009 Geschrieben 17. Juni 2009 Hallo, ich habe ein array und lösche einen wert an index = 0. danach fängt mein index bei 1 an. wie kann ich das array irgendwie neu anordnen, dass er wieder bei 0 anfängt, bzw. wenn ich index=3 lösche, dass er dann alle elemente neu indexiert? von 0, 1, 2, 4 wieder zu 0, 1, 2, 3 gruß Alex Zitieren
Gast alexC++ Geschrieben 17. Juni 2009 Geschrieben 17. Juni 2009 var dump-> 1. vorm löschen und 2. nach dem löschen (mit anfangsindex = 1) array 0 => array 0 => string '1' (length=1) 1 => string 'Audi TT, Baujahr 2008, 255 PS' (length=29) 2 => string '29000.00' (length=8) 3 => int 1 1 => array 0 => string '4' (length=1) 1 => string 'BMW M3 Baujahr 2007, 420 PS' (length=27) 2 => string '88000.00' (length=8) 3 => int 1 anzahl: 1 array 1 => & array 0 => string '4' (length=1) 1 => string 'BMW M3 Baujahr 2007, 420 PS' (length=27) 2 => string '88000.00' (length=8) 3 => int 1 [/PHP] code-> [PHP] if(isset($_POST['loeschen'])) { for($i = 0; $i < count($_POST['loeschen']); $i++) { foreach ($_SESSION['warenkorb'] as &$artikel) { if(in_array($_POST['loeschen'][$i], $artikel { unset($_SESSION['warenkorb'][$i]); } } } echo "anzahl: " . count($_SESSION['warenkorb']); var_dump($_SESSION['warenkorb']); Zitieren
T3D Geschrieben 17. Juni 2009 Geschrieben 17. Juni 2009 eine vorgefertigte sortierfunktion gibt es dafuer nicht siehe: PHP: Sorting Arrays - Manual die frage ist: wofuer brauchst du das? um das ganze mit einer forschleife abzufragen? nehm lieber foreach ansonsten kommst du nich drum herrum das array durchzulaufen und daraus ein neues array zu bilden Ted edit: im uebrigen is das das was ich dir gestern erzaehlt hatte, das du probleme beim loeschen bekommen wirst. solltest dir evtl. wirklich noch einmal den aufbau deines SessionArrays ueberlegen Zitieren
Gast alexC++ Geschrieben 17. Juni 2009 Geschrieben 17. Juni 2009 da habe ich auch schon geschaut und nichts gefunden. hatte einen denkfehler beim unset-index. zusätzlich musste ich das session-array in ein neues speichern und das wieder zurück in das session-array damit der index wieder stimmt. gefällt mir garnicht das gewusel. Zitieren
Gast alexC++ Geschrieben 17. Juni 2009 Geschrieben 17. Juni 2009 if(isset($_POST['loeschen']))//-> sind checkboxen! wenn haken, dann löschen { for($i = 0; $i < count($_POST['loeschen']); $i++) { $index = 0; foreach ($_SESSION['warenkorb'] as &$artikel) { //ich übergebe im value der checkboxen die id der artikel //die wiederum im index 0 des artikel-arrays zu finden ist if($artikel[0] == $_POST['loeschen'][$i]) { unset($_SESSION['warenkorb'][$index]); $neuesArray = array(); $y = 0; foreach ($_SESSION['warenkorb'] as &$artikelSortiert) { $neuesArray[$y] = $artikelSortiert; $y++; } $_SESSION['warenkorb'] = $neuesArray; } $index++; } } } [/PHP] habe auch für die checkboxen eine foreach-schleife getestet, hat aber nicht funktioniert, deshalb habe ich es erstmal wieder rückgängig gemacht. hab jetzt keinen kopf mehr für den kram! Zitieren
T3D Geschrieben 17. Juni 2009 Geschrieben 17. Juni 2009 Das sortieren solltest du natuerlich nicht in der loesch routine machen sondern danach und damit geht das auch ganz einfach: /* leere indexe auffuellen */ $tmpArray = array(); foreach ($_SESSION['warenkorb'] as $artikel) { $tmpArray[] = $artikel; } $_SESSION['warenkorb'] = $tmpArray; [/PHP] aber wie gesagt... eigentlich solltest dir der index auch egal sein koennen.. koenntest das mit der loeschroutine auch so loesen koennen: [PHP]if(isset($_POST['loeschen']))//-> sind checkboxen! wenn haken, dann löschen { foreach($_POST['loeschen'] as $loeschArtikel) { foreach ($_SESSION['warenkorb'] as $key => $artikel) { if($artikel[0] == $loeschArtikel) { unset($_SESSION['warenkorb'][$key]); } } } } Ted Zitieren
Gast alexC++ Geschrieben 18. Juni 2009 Geschrieben 18. Juni 2009 (bearbeitet) wenn ich es danach sortiere, funktioniert es wieder nicht! habe es nach der foreach, nach der for und nach if sortieren lassen. immer falsches ergebnis Bearbeitet 18. Juni 2009 von alexC++ Zitieren
T3D Geschrieben 18. Juni 2009 Geschrieben 18. Juni 2009 was funktioniert denn dann nicht? was gibt dir der vardump denn aus? Zitieren
Gast alexC++ Geschrieben 18. Juni 2009 Geschrieben 18. Juni 2009 wenn ich z.B. drei artikel im warenkorb habe und das erste lösche, steht dann das was ich lösche 2 mal drin und die andern 2 nicht mehr. so in der richtung. ich kann dir das ding mal schicken, wenn du magst. ich muss weiter machen, da ich morgen das projekt abgeben muss Zitieren
T3D Geschrieben 18. Juni 2009 Geschrieben 18. Juni 2009 wenn du dich damit bis heute abend (~19 uhr) gedulden kannst?! da kann ich mir das dann mal in ruhe angucken Zitieren
Gast alexC++ Geschrieben 18. Juni 2009 Geschrieben 18. Juni 2009 jar klar, ich habe zeit! es funktioniert ja, ist zwar nicht sehr schön....... Gruß Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.