Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

php index eines arrays neu vergeben

Empfohlene Antworten

Veröffentlicht

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

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

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

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.


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

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

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++

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

jar klar, ich habe zeit!

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

Gruß

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.