Wie kann ich entfernen Sie ein einzelnes array-Mitglied mit array_splice in php?
Ich glaube, ich kann nicht richtig verstehen, wie array_splice funktionieren soll. Mein Verständnis ist, dass der erste param ist Ihre erste array, der zweite Parameter ist das element zu starten, und der Dritte Parameter ist die Länge, oder die Anzahl der Elemente zu entfernen/zu ersetzen.
So, ich habe dieses array (print_r-Ausgabe):
Array (
[0] => Array ( [TypeFlag] => S [qty] => 1 [denom] => 25 [certMessage] => [totalPrice] => 25 )
[1] => Array ( [TypeFlag] => C [qty] => 2 [denom] => 25 [certMessage] => [totalPrice] => 50 )
[2] => Array ( [TypeFlag] => V [qty] => 2 [denom] => 25 [certMessage] => test [totalPrice] => 50 ) )
Möchte ich komplett entfernen, das zweite element (das array mit dem index 1; TypeFlag = C, usw.) Ich will nicht, Sie zu ersetzen mit etwas, nur um zurückzugeben, das array mit den verbleibenden zwei Elemente. Ich hab das versucht (wo das cart ist der array-name):
$cart = array_splice($cart, 1,1);
Aber was ich am Ende mit ist dies, wenn dabei ein print_r:
Array ( [0] => Array ( [TypeFlag] => C [qty] => 2 [denom] => 25 [certMessage] => [totalPrice] => 50 ) )
So scheint es, entfernen 0 und 2, so dass 1 als Rest. Was mache ich falsch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
array_splice
gibt ein array zurück, das aus den extrahierten Elementen.Du tust:
Damit Sie extrahieren 2. element (index 1) und weisen das Ergebnis wieder zu
$cart
überschreiben Ihre ursprünglichen array.Vollständig zu entfernen 2. element weisen Sie den Rückgabewert von
array_splice
zurück$cart
. So einfach tun:Dies funktioniert, weil das array ist durch Verweis übergeben der Funktion.
Außerdem, wenn Sie entfernen möchten, ein einzelnes element aus dem array seine effizienter und sauberer zu verwenden
unset
als:array_splice gibt "entfernt/ersetzt" Elemente, die man dann zuordnen zu überschreiben, die korrekt gespleißten $cart
oder einfach
Warum nicht verwenden Sie unset - d.h.
http://php.net/manual/en/function.unset.php
Das einzige Problem bei der Verwendung von unset() ist, dass es nicht aktualisieren Sie die Indizes.
d.h.
Array
(
[0] => ein
[1] => zwei
[2] => drei
[3] => vier
)
Array
(
[0] => ein
[1] => zwei
[3] => vier
)
in der Erwägung, dass array_splice wird neu indizieren das array
Array
(
[0] => ein
[1] => zwei
[2] => vier
)
Nur die Verwendung von unset():