Wie kann ich ein einzelnes Array-Mitglied mit array_splice in PHP entfernen?

8

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?

    
EmmyS 27.09.2010, 15:08
quelle

5 Antworten

14

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:

%Vor%

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:

zu verwenden %Vor%     
codaddict 27.09.2010, 15:15
quelle
5

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%     
Mark Baker 27.09.2010 15:14
quelle
3

Warum benutzen Sie nicht unbestimmt - d. h.

%Vor%

Ссылка

    
SW4 27.09.2010 15:27
quelle
3

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 )

    
MrNickel 14.01.2015 02:40
quelle
2

Verwenden Sie einfach unset ():

%Vor%     
Pickle 27.09.2010 15:27
quelle

Tags und Links