Robert B.: Array insert in PHP?

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

akzeptierte Antworten

  1. 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.

    1. 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

  2. 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

    --
    sumpsi - posui - obstruxi
    1. 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.

      1. 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

        1. 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

          --
          sumpsi - posui - obstruxi
          1. 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

  3. 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

    1. 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