Ich glaube, ich verstehe vielleicht nicht richtig, wie array_splice funktionieren soll. Nach meinem Verständnis ist der erste Parameter Ihr Ausgangsarray, der zweite Parameter ist das Element, von dem aus gestartet wird, und der dritte Parameter ist die Länge oder Anzahl der zu entfernenden / zu ersetzenden Elemente.
Also, ich habe dieses Array (print_r output):
%Vor%Ich möchte das zweite Element vollständig entfernen (das Array mit dem Index 1; TypeFlag = C, etc.) Ich will es nicht durch irgendetwas ersetzen; nur um das Array mit den verbleibenden zwei Elementen zurückzugeben. Ich habe das versucht (wobei Wagen der Name des Arrays ist):
%Vor%Aber am Ende ist das, wenn ich eine print_r:
mache %Vor%So scheint es, 0 und 2 zu entfernen und 1 als den Rest zu verlassen. Was mache ich falsch?
array_splice
gibt ein Array aus den extrahierten Elementen zurück.
Sie tun:
%Vor% Sie extrahieren also das zweite Element (Index 1) und weisen das Ergebnis wieder $cart
zu und überschreiben das ursprüngliche Array.
Um das zweite Element vollständig zu entfernen, weisen Sie den Rückgabewert von array_splice
nicht auf $cart
zu. Also mach einfach:
Dies funktioniert, weil das Array als Referenz an die Funktion übergeben wird.
Auch wenn Sie ein einzelnes Element aus dem Array entfernen möchten, ist es effizienter und sauberer unset
als:
array_splice gibt die Elemente "removeed / replace" zurück, die Sie dann zuweisen, um den korrekt gespleißten $ cart
zu überschreiben %Vor%oder einfach
%Vor%Das einzige Problem bei der Verwendung von unset () ist, dass die Indizes nicht aktualisiert werden.
d. h.
%Vor%Array ( [0] = & gt; ein [1] = & gt; zwei [2] = & gt; drei [3] = & gt; vier )
%Vor%Array ( [0] = & gt; ein [1] = & gt; zwei [3] = & gt; vier )
wobei array_splice das Array neu indizieren wird
%Vor%Array ( [0] = & gt; ein [1] = & gt; zwei [2] = & gt; vier )
Tags und Links arrays php array-splice