Stellen wir uns vor, wir haben zwei Arrays:
$array_1 = array(
'0' => 'zero',
'1' => 'one',
'2' => 'two',
'3' => 'three',
);
$array_2 = array(
'zero' => '0',
'one' => '1',
'two' => '2',
'three' => '3',
);
Jetzt möchte ich array('sample_key' => 'sample_value')
nach dem dritten Element jedes Arrays einfügen . Wie kann ich es tun?
Antworten:
array_slice()
kann verwendet werden, um Teile des Arrays zu extrahieren, und der Union- Array-Operator (+
) kann die Teile neu kombinieren.Dieses Beispiel:
gibt:
quelle
+
sollte nicht verwendet werden! Verwenden Siearray_merge
stattdessen! Weil die Indizes ganzzahlig sind (normales Array, kein Hash),+
funktionieren sie nicht wie erwartet !!!array_merge
Das Verhalten von Zifferntasten ist für diese Frage nicht geeignet.count($array)-3
, können Sie einfach null angeben, um den gleichen Effekt zu erzielen. Auch die Verwendungarray_merge
als TMS vorgeschlagen benötigen Sie keine eindeutigen Index zu verwenden. BEISPIEL: Hinzufügen eines "neuen Werts" zu einem vorhandenen Array:$b = array_merge( array_slice( $a, 0, 1, true ), array( 'new-value' ), array_slice( $a, 1, null, true ) );
+
vs.array_merge
. Wenn Sie Dinge in ein numerisches Array einfügen möchten, sollten Sie es nicht verwenden,+
da es wahrscheinlich nicht Ihren Erwartungen entspricht. Aber Sie sollten auch nicht verwendenarray_merge
; Bei numerischen Arrays wird dieses ganze Problem mit derarray_splice
Funktion gelöst . Für assoziative oder gemischte Arrays möchten Sie wahrscheinlich nicht, dass numerische Schlüssel neu indiziert werden, daher ist die Verwendung+
völlig angemessen.Verwenden Sie für Ihr erstes Array
array_splice()
:Ausgabe:
Für den zweiten gibt es keine Bestellung, Sie müssen also nur Folgendes tun:
Und sortieren Sie die Schlüssel nach Belieben.
quelle
Code:
Beispiel:
Mag nicht wirklich perfekt aussehen, aber es funktioniert.
quelle
Hier ist eine einfache Funktion, die Sie verwenden können. Einfach Plug n Play.
Dies ist Einfügen nach Index, nicht nach Wert.
Sie können das Array übergeben oder eines verwenden, das Sie bereits deklariert haben.
EDIT: Kürzere Version:
Jetzt können Sie den Code mit testen
Und das Ergebnis ist:
quelle
quelle
Diese Funktion unterstützt:
VERWENDUNG:
ERGEBNISSE:
quelle
Ich habe kürzlich eine Funktion geschrieben, um etwas Ähnliches zu tun, wie es sich anhört, als ob Sie es versuchen. Es ist ein ähnlicher Ansatz für die Antwort von clasvdb.
Grundsätzlich wird es an einer bestimmten Stelle eingefügt, aber das Überschreiben wird vermieden, indem alle Elemente nach unten verschoben werden.
quelle
Wenn Sie nicht wissen, dass Sie es an Position 3 einfügen möchten, aber den Schlüssel kennen , nach dem Sie es einfügen möchten, habe ich diese kleine Funktion erfunden, nachdem ich diese Frage gesehen habe.
Hier ist eine Codepad-Geige, um sie in Aktion zu sehen: http://codepad.org/5WlKFKfz
Hinweis: array_splice () wäre viel effizienter gewesen als array_merge (array_slice ()), aber dann wären die Schlüssel Ihrer eingefügten Arrays verloren gegangen. Seufzer.
quelle
Saubererer Ansatz (basierend auf flüssiger Nutzung und weniger Code).
Verwendung:
quelle
Einfachste Lösung, wenn Sie (ein Element oder Array) nach einem bestimmten Schlüssel einfügen möchten:
Also, wenn Sie haben:
Und ausführen:
Du wirst haben:
quelle
Die Verwendung von array_splice anstelle von array_slice führt zu einem Funktionsaufruf weniger.
quelle
Ich mache das als
quelle
Ich habe gerade eine ArrayHelper-Klasse erstellt, die dies für numerische Indizes sehr einfach macht.
Beispiel:
Beginn $ array:
Ergebnis:
quelle
Dies ist eine bessere Methode, um ein Element an einer bestimmten Position in ein Array einzufügen.
quelle
Ich brauchte etwas, das vor, nach und nach dem Schlüssel eingefügt werden konnte. und am Anfang oder Ende des Arrays hinzufügen, wenn der Zielschlüssel nicht gefunden wird. Standardmäßig wird nach dem Schlüssel eingefügt.
Neue Funktion
Code eingeben
Ausgabe
quelle
Sehr einfache 2-saitige Antwort auf Ihre Frage:
Zuerst fügen Sie mit array_splice etwas in Ihr drittes Element ein und weisen diesem Element dann einen Wert zu:
quelle
Dies ist eine alte Frage, aber ich habe 2014 einen Kommentar gepostet und komme häufig darauf zurück. Ich dachte, ich würde eine vollständige Antwort hinterlassen. Dies ist nicht die kürzeste Lösung, aber leicht zu verstehen.
Fügen Sie an einer nummerierten Position einen neuen Wert in ein assoziatives Array ein, wobei die Schlüssel und die Reihenfolge erhalten bleiben.
quelle
Nicht so konkret wie die Antwort von Artefacto, aber basierend auf seinem Vorschlag, array_slice () zu verwenden, schrieb ich die nächste Funktion:
Eigenschaften:
Anwendungsbeispiele:
quelle
Für den Fall, dass Sie nur ein Element an einer bestimmten Position in ein Array einfügen möchten (basierend auf der Antwort von @clausvdb):
quelle
Hier ist meine Version:
quelle
einfacher Weg .. mit
array_splice()
Ergebnis..
quelle
Dies ist eine weitere Lösung in
PHP 7.1
quelle
Sie können Elemente während einer foreach-Schleife einfügen , da diese Schleife auf einer Kopie des ursprünglichen Arrays funktioniert , Sie jedoch die Anzahl der eingefügten Zeilen verfolgen müssen (ich nenne dies in diesem Code "Aufblähen"):
Natürlich können Sie diese "Aufblähungs" -Idee verallgemeinern, um beliebige Einfügungen und Löschungen während der foreach-Schleife zu verarbeiten.
quelle