Karl: array vergleichen und neu schreiben

Hallo

ich hänge nun etwas und zwar habe ich 2 Arrays:

Array ( [1008] => 0 [9999] => 0 [10000] => 1 [10001] => 0 )

Array ( [9999] => 1 )

Das erste Array kommt aus der Datenbank und das zweite Array soll den neuen Zustand erklären es gibt 0 oder 1

Jetzt muß ich die die 2 Arrays vergleichen wobei das zweite Array das Hauptarry darstellen soll welches wieder in der Datenbank geschrieben werden. Das heißt aber das Schlüssel 10000 mit 0 überschrieben werden muß weil kein Zustand gesetzt wurde und alle anderen auch mit 0 überschrieben werden sollen.

Ich kriege es einfach nicht mehr hin ein Array zu erzeugen was den Rest des Array eins auf 0 setzt.

Ich bitte um hilfe!

Danke

Gruß Karl

  1. Moin

    http://php.net/foreach
    http://php.net/array_key_exits

    Ich hoffe die beiden Befehle werden dir helfen : )

    1. Ich hoffe die beiden Befehle werden dir helfen : )

      Wie kann ich 2 Array in 1 Array schreiben? Geht das überhaupt`?

      Gruß Karl

      1. Also ich habe 2 Array die nun so aussehen:

        Array ( [9999] => 1 )

        Array ( [1008] => 0 [10000] => 0 [10001] => 0 )

        Die möchte ich nun zusammenlegen in 1 Array aber das funktioniert bei mir nicht wenn ich zb folgendes schreibe bekomme ich:

        $array = array_merge($array1, $array2);

        Ausgabe:
        Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 1 )

        aber die Ausgabe soll so sein wie dort oben bloss alles in ein Array.
        Was ist da nun jetzte falsch?

        1. Hi,

          "Falsch" ist da gar nix dran ;)
          Die Funktion array_merge schiebt, wie du schon richtig sagst, mehrere Arrays in ein Array zusammen. Wichtig dabei: Es wird kein asoc Array erzeugt.

          Wenn Du das möchtest, solltest Du dir eine kleine Funktion schreiben:

          function merge_asoc_array($array1, $array2) {
              $merged_array = array();

          // First Array
              reset($array1);
              for(list($key, $value) = each($array1)) {
                  $merged_array[$key] = $value;
              }

          // Second Array
              reset($array1);
              for(list($key, $value) = each($array1)) {
                  $merged_array[$key] = $value;
              }

          return $merged_array;
          }

          oder so ;) - Funktion nicht getestet, einfach nur runtergetipselt.

          Gruss
          Stefan

          1. Hi,

            "Falsch" ist da gar nix dran ;)
            Die Funktion array_merge schiebt, wie du schon richtig sagst, mehrere Arrays in ein Array zusammen. Wichtig dabei: Es wird kein asoc Array erzeugt.

            Hallo!

            zu Tom erstmal es ist genau richtig wie Du es verstanden hast!

            Also inzwischen habe ich es so gelöst: (funktioniert auch!)

            while (list($key2, $value2) = each ($nummer2)):
              while (list($key, $value) = each ($nummer)):
               $array[$key] = $value;
              endwhile;
              $array[$key2] = $value2;
               endwhile;

            print_r($array);

            Die Frage ist nur welche Lösung ist effizienter? Deine oder meine?
            Ich war zu Anfangs auf den falschen Fuß...

            Ich wäre Dir dankbar wenn Du mir nochmal das asoc Array oder den Unterschied zum anderen array erklären könntest dann wird mir das alles noch klarer. Oder gibt es dazu irgendwo eine Erklärung wo die unterschiedlichen array verglichen werden?

            Danke trotzdem für Eure mühe!

            Gruß Karl

      2. Hello,

        Wie kann ich 2 Array in 1 Array schreiben? Geht das überhaupt`?

        Dein Problem ist ja nicht, zwei Arrays einfach zusammenzuführen, sondern erst einmal klar zu werden über die Logik, die haben willst.

        Ich habe dich so verstanden:

        Du selektierst diverse Datensätze aus einer Datenbank und sammselst sie in Array1. Der Zustand ist eingentlich egal, denn nur diejenigen, die auch ain Array2 vorhanden sind, werden gezielt gesetzt, alle anderen werden auf NULL gesetzt, da sie in Array2 gar nicht vorhanden sind.

        So hast Du es beschreiben. Bitte prüfe das noch mal, denn danach richten sich die Programmstatements.

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

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen