Array insert in PHP?
Robert B.
- php
1 dedlfix0 Rolf B0 Felix Riesterer
Moin Forum,
ich habe gerade eben ziemlich lange nach einer Methode gesucht in PHP etwas in ein Array einzufügen – mit „insert“ kommt man da leider nicht weit, im Gegensatz zu „replace“, das zu array_splice
führt:
$a = [1, 2, 3, 5];
$b = array_splice($a, 3, 0, [4]);
print_r($a);
print_r($b);
Die Ausgabe ist dann:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
Array
(
)
Im Array $a
werden an Position 3
0
durch die Inhalte aus dem Array [4]
ersetzt, also effektiv wird 4
an der neuen Position 3
eingefügt.
Das Array $b
enthält die ersetzten Elemente, in diesem Fall also keine.
Ist array_splice
tatsächlich die Methode zum Einfügen von Werten in ein Array oder was habe ich übersehen?
Viele Grüße
Robert
Tach!
ich habe gerade eben ziemlich lange nach einer Methode gesucht in PHP etwas in ein Array einzufügen – mit „insert“ kommt man da leider nicht weit, im Gegensatz zu „replace“, das zu
array_splice
führt:
Ein Insert ist genau das, was Splice macht, und was man auch zu Fuß machen müsste. Auftrennen, gegebenenfalls Elemente entfernen und - ebenfalls optional - an der Stelle neue einfügen.
Ist
array_splice
tatsächlich die Methode zum Einfügen von Werten in ein Array oder was habe ich übersehen?
Ja. Auch in Javascript beispielsweise arbeitet Array.prototype.splice() auf dieselbe Weise.
dedlfix.
Moin dedlfix,
ich habe gerade eben ziemlich lange nach einer Methode gesucht in PHP etwas in ein Array einzufügen – mit „insert“ kommt man da leider nicht weit, im Gegensatz zu „replace“, das zu
array_splice
führt:Ein Insert ist genau das, was Splice macht, und was man auch zu Fuß machen müsste. Auftrennen, gegebenenfalls Elemente entfernen und - ebenfalls optional - an der Stelle neue einfügen.
Naja, wenn ich nur einfügen möchte, brauche ich nichts zu entfernen. Vielleicht habe ich da auch einfach zu sehr in C++ gedacht.
Danke für deine Antwort und viele Grüße
Robert
Hallo Robert,
es gibt noch array_push, array_pop, array_shift und array_unshift, aber die agieren am Anfang oder Ende des Arrays. Für Aktionen mittendrin gibt's array_slice und array_splice, ja.
Dass array_splice außer Einfügen auch Ersetzen kann, muss Dich dabei nicht stören.
Rolf
Tach!
Für Aktionen mittendrin gibt's array_slice und array_splice, ja.
array_slice() gibt eine Kopie eines Teils des Arrays zurück, ändert es aber nicht. Das ist also genaugenommen keine Aktion am/im Array.
Dass array_splice außer Einfügen auch Ersetzen kann, muss Dich dabei nicht stören.
Das ist eine Frage, wie man es formuliert. Es bietet die Möglichkeit, Elemente zu löschen, und Elemente einzufügen. Wenn man beides kombiniert betrachtet, ist es ein Ersetzen. In dem Sinne kann man auch nichts durch neue Elemente erstzen und vorhandene Elemente durch nichts ersetzen.
dedlfix.
Moin,
In dem Sinne kann man auch nichts durch neue Elemente ersetzen und vorhandene Elemente durch nichts ersetzen.
das klingt philosophisch – bzw. mathematisch.
Viele Grüße
Robert
Hallo Robert,
es gibt noch die dritte Variante:
$array = [ "Self", "Html", "Forum" ];
array_splice($array, 1, 0, [ ] );
Ist es philosophisch, Nichts durch ein anderes Nichts zu ersetzen?
Ist es mathematisch?
Oder einfach nur Blödsinn 😉…
Rolf
Moin Rolf,
es gibt noch die dritte Variante:
$array = [ "Self", "Html", "Forum" ]; array_splice($array, 1, 0, [ ] );
Ist es philosophisch, Nichts durch ein anderes Nichts zu ersetzen?
Ist es mathematisch?
Oder einfach nur Blödsinn 😉…
Es geht noch weniger als (dein) Nichts:
array_splice($array, 1, 0, null);
Viele Grüße
Robert
Lieber Robert,
etwas in ein Array einzufügen
$a = [1, 2, 3];
$a[] = "!"; // 1, 2, 3, !
$a[4] = 5; // 1, 2, 3, !, 5
Hilft das weiter?
Liebe Grüße
Felix Riesterer
Moin Felixm
etwas in ein Array einzufügen
$a = [1, 2, 3]; $a[] = "!"; // 1, 2, 3, ! $a[4] = 5; // 1, 2, 3, !, 5
Hilft das weiter?
leider nicht, denn in beiden Fällen kann ja nur etwas hinten ein- bzw. genauer angefügt werden. Ich möchte allerdings etwas irgendwo in der Mitte einfügen.
Viele Grüße
Robert