Sebastian: push_array von 2 array's

Hallo,

ich möchte gerne 2 array mit push array zusammen fügen aber in meinem test script kommt immer das falsche Ergebnis raus. Ich verstehe das nicht mehr???

$liste1   = "3;4;5;11;77;33;106;107";
$liste2   = "11;22;34;93;15;33";

$array_liste1=array();
$array_liste2=array();

$array_liste1 = explode(';', $liste1);
$array_liste2 = explode(';', $liste2);

$test = array();
$test[] = array_push($array_liste1, $array_liste2);

print_r($test);

Ausgabe:
Array ( [0] => 9 )

Eigentlich möchte ich die 2 arrays $array_liste1 und $array_liste2 zusammen in ein array schreiben und anschliessend doppelte Einträge aus dem array löschen. Ich bitte um Hilfe!

Gruß Sebastian

  1. Hi!

    $liste1   = "3;4;5;11;77;33;106;107";
    $liste2   = "11;22;34;93;15;33";

    $array_liste1 = explode(';', $liste1);
    $array_liste2 = explode(';', $liste2);

    $test = array_unique(array_merge($array_liste1, $array_liste2));

    print_r($test);

    ;-)

    Grüße
    Andreas

    1. Ja das funktioniert!

      Danke!

      Ich werde nun erstmal durchlesen was die Funktionen überhaupt machen damit ich es auch verstehe!

      Bzw. ich habe mir die heute schon ein paar mal durchgelesen und gedacht die brauch ich nicht...

      Gruß Sebastian

      1. Hi!

        Ich werde nun erstmal durchlesen was die Funktionen überhaupt machen damit ich es auch verstehe!

        Das will ich auch hoffen ;-)

        Bzw. ich habe mir die heute schon ein paar mal durchgelesen und gedacht die brauch ich nicht...

        Warum? Die eine Funktion "array_merge()" verbindet mehrere Arrays und gibt den kompletten Ergebnis-Array zurück, die andere Funktion "array_unique()" eliminiert alle doppelten Einträge und gibt ebenfalls das Ergebnis, also den von Dubletten bereinigten Array, zurück.

        http://de3.php.net/array-unique
        http://de3.php.net/array-merge

        Da steht das eigentlich ganz gut beschrieben, wenn es Dir noch nicht klar ist probier mal ein wenig mit den Beispielen rum.

        Grüße
        Andreas

        1. Hello,

          [...] die andere Funktion "array_unique()" eliminiert alle doppelten Einträge und gibt ebenfalls das Ergebnis, also den von Dubletten bereinigten Array, zurück.

          http://de3.php.net/array-merge

          Allerdings ist das so eine Sache mit dem automatischen Entfernen von "Doubletten". Die Funktion schaut ja nur nach den Schlüsseln und die Werte, die dahinter stecken, können durchaus unterschiedlich sein. Welches ist dann der Wert, der bleiben darf und welcher muss gehen?

          Liebe Grüße aus http://www.braunschweig.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          1. Hi!

            http://de3.php.net/array-merge

            Allerdings ist das so eine Sache mit dem automatischen Entfernen von "Doubletten". Die Funktion schaut ja nur nach den Schlüsseln und die Werte, die dahinter stecken, können durchaus unterschiedlich sein.
            Welches ist dann der Wert, der bleiben darf und welcher muss gehen?

            <quote source=http://de3.php.net/array-merge>
            Haben die Arrays den gleichen numerischen Schlüssel, dann wird der hintere Wert den vorhergehenden nicht überschrieben, sondern angehängt.
            </quote>

            Ich sehe kein Problem, denn es werden in diesem Fall ausschließlich nummerische Schlüssel verwendet, da wird nichts überschrieben oder entfernt. Zum Entfernen der Dubletten verwende ich array_unique():

            <quote source=http://de3.php.net/array-unique>
            Erst behandelt array_unique() die Werte als Strings und sortiert sie, danach wird der erste gefundene Schlüssel behalten, und alle folgenden Schlüssel ignoriert.
            </quote>

            und auch hier sehe ich kein Problem, weil hier nur tatsächlich doppelte Werte eliminiert werden.

            Grüße
            Andreas

            1. Hello,

              Hi!

              http://de3.php.net/array-unique

              Allerdings ist das so eine Sache mit dem automatischen Entfernen von "Doubletten". Die Funktion schaut ja nur nach den Schlüsseln und die Werte, die dahinter stecken, können durchaus unterschiedlich sein.
              Welches ist dann der Wert, der bleiben darf und welcher muss gehen?

              <quote source=http://de3.php.net/array-merge>
              Haben die Arrays den gleichen numerischen Schlüssel, dann wird der hintere Wert den vorhergehenden nicht überschrieben, sondern angehängt.
              </quote>

              Sorry, da hatte ich den falschen Link weggelöscht. Meine Aussage bezieht sich natürlich auf Array_unique()

              Zum Entfernen der Dubletten verwende ich array_unique():

              <quote source=http://de3.php.net/array-unique>
              Erst behandelt array_unique() die Werte als Strings und sortiert sie, danach wird der erste gefundene Schlüssel behalten, und alle folgenden Schlüssel ignoriert.
              </quote>

              und auch hier sehe ich kein Problem, weil hier nur tatsächlich doppelte Werte eliminiert werden.

              Also nochmal zum Allgemeinverständnis:

              Array liste1
              (
                  [rot] => eins
                  [gelb] => drei
                  [blau] => zwei
                  [grau] => sieben
              )

              Array liste2
              (
                  [grau] => acht
                  [rot] => zwei
                  [gelb] => elf
                  [lila] => zwei
                  [violett] => sieben
              )

              werden nun durch $_out = array_merge($_liste1,$_liste2) zusammengeführt:

              Array out
              (
                  [rot] => zwei
                  [gelb] => elf
                  [blau] => zwei
                  [grau] => acht
                  [lila] => zwei
                  [violett] => sieben
              )

              Doppelte Schlüssel werden beim Merge beseitigt, da einem beeits vorhandenen Schlüssel von Liste 1 der Wert aus Liste 2 zugewiesen wird.

              Nun noch $_out = array_unique($_out):

              Array out
              (
                  [rot] => zwei
                  [gelb] => elf
                  [grau] => acht
                  [violett] => sieben
              )

              Hier bleibt der erste auftretende Wert erhalten (rot=>zwei) Alle wiederholten Werte werden ignoriert.

              Man muss sich also ggf. über die Reihenfolge der Parameter in array_merge() voher Gedanken machen. Man könnte daraus eine nette PHP-Aufgabe machen: Kommt dieses Schlüssel-Wert-Paar durch? (Wetten werden angenommen).

              Mehr wollte ich vorhin damit eigentlich auch nicht sagen... ;-)

              Liebe Grüße aus http://www.braunschweig.de

              Tom

              --
              Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
              1. Hi Tom!

                Man muss sich also ggf. über die Reihenfolge der Parameter in array_merge() voher Gedanken machen. Man könnte daraus eine nette PHP-Aufgabe machen: Kommt dieses Schlüssel-Wert-Paar durch? (Wetten werden angenommen).

                Mehr wollte ich vorhin damit eigentlich auch nicht sagen... ;-)

                Ja, das ist auch vollkommen korrekt, hat nur keinerlei Auswirkungen auf das Beispiel:

                $liste1   = "3;4;5;11;77;33;106;107";
                $liste2   = "11;22;34;93;15;33";

                $array_liste1 = explode(';', $liste1);
                $array_liste2 = explode(';', $liste2);

                Grüße
                Andreas