Zum Inhalt springen

php index eines arrays neu vergeben


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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']);

Geschrieben

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

Geschrieben

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.

Geschrieben


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! :D

Geschrieben

Das sortieren solltest du natuerlich nicht in der loesch routine machen sondern danach :P

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

Geschrieben (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 :D

Bearbeitet von alexC++
Geschrieben

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

Geschrieben

jar klar, ich habe zeit!

es funktioniert ja, ist zwar nicht sehr schön.......

Gruß

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...