Michael: Array Felder Vergleichen

Hallo,

ich habe hier ein kleines Problem mir fällt nur dazu keine Lösung ein wie es gehen könnte?

Also ich habe ein Array was so aussieht:

Array
(
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 1
    [4] => 1
    [5] => 2
    [6] => 2
    [7] => 2
    [8] => 2
    [9] => 2
)

Nun soll das Array ausgeben werden nur doppelte Ausgaben mit gleichen Wert darf es nicht geben. Wie vergleiche ich den Inhalt des Feldes 0 mit 1, 2 3, 4, 5 ...              ?

Also Ausgabe möchte ich nicht
1
1
1
1
1
2
2
2
2
2
 stehen haben

sondern nur

1
2

Aber wie mache ich das? vielleicht gibt es da ja doch eine passenden funktion die ich noch nicht entdeckt habe?

  1. Hallo,
    du gibst das doch bestimmt mit einer schleife aus, oder?

    Dann mach es so

    $testarray = array();
    schleife(...)
    {

    if(!in_array($wert_des_anderen_array, $testarray)
    {
    $wert_adden = array_push($testarray, $wert_des_anderen_array);
    //Ausgabe
    }

    }

    Also du überprüfst ob in dem neuem Array der Wert steht.
    Wenn nicht, gibst du den wert aus, und pusht den Wert in das Array

    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    1. $testarray = array();
      schleife(...)
      {

      if(!in_array($wert_des_anderen_array, $testarray)
      {
      $wert_adden = array_push($testarray, $wert_des_anderen_array);
      //Ausgabe
      }

      }

      So sähe es bei mir aus:

      for ($i=0; $i <$anzahl; $i++)
        {
        $testarray = $array_kompakt[$i][2];

      $wert_des_anderen_array = $array_kompakt[$y][2];

      if(!in_array($wert_des_anderen_array, $testarray))
          {
          $wert_adden = array_push($testarray, $wert_des_anderen_array);
          echo $wert_adden; //Ausgabe
          }

      //print_r($array_kompakt[$i][2]);
        //echo "<br>";
        }

      Nur funktioniert das bei mir nicht weil ich nicht 2 verschiedene Arrays vergleiche sondern die Werte innerhalb eines Arrays wenn was gleich ist darf es nur 1 mal ausgegeben werden. Ich denke Deine Lösung passt zu meinem Problem nicht?

      1. Hallo,

        $wert_des_anderen_array = array("Text1", "Text2", "Text1", "Text2");

        $testarray = array(); //Leeres Array

        $anzahl = count($wert_des_anderen_array);

        for ($i=0; $i <$anzahl; $i++)
          {
            if(!in_array($wert_des_anderen_array[$i], $testarray))
            {
            array_push($testarray, $wert_des_anderen_array[$i]);
            echo $wert_des_anderen_array[$i]; //Ausgabe
            }
         }

        Ausgabe:
        Text1 Text2

        MFG
        Andavos

        --
        http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
        1. Also bei mir ist der letzte Wert in der Ausgabe doppelt? Liegt das evtl daran weil ich ein 2 dimensionales array habe?

          $wert_des_anderen_array = array();
                  $wert_des_anderen_array[] = $array_kompakt[$i][2];

          $testarray = array(); //Leeres Array

          for ($i=0; $i <$anzahl; $i++)
              {
             $wert_des_anderen_array[$i] = $array_kompakt[$i][2];

          if(!in_array($wert_des_anderen_array[$i], $testarray)) // Ist der Wert im testarray schon vorhanden?
                {
                array_push($testarray, $wert_des_anderen_array[$i]);
                echo $wert_des_anderen_array[$i]; //Ausgabe
                }
             }

          Ausgabe:
          1 2 2

          Dann habe ich array_unique gearbeitet aber da kommt als Fehler "Wrong datatype in array_unique()"  ?

          //$result = array();
                         for ($i=0; $i <$anzahl; $i++)
              {
             $result = array_unique($array_kompakt[$i][2]);

          }
            print_r($result);

          1. Hi!

            Dann habe ich array_unique gearbeitet aber da kommt als Fehler "Wrong datatype in array_unique()"  ?

            //$result = array();

            btw, das ist durchaus eine gute Idee.

            for ($i=0; $i <$anzahl; $i++)
                {
               $result = array_unique($array_kompakt[$i][2]);

            }
              print_r($result);

            Mit ist noch nicht wirklich klar was Du vorhast, oder wie Dein "$array_kompakt[$i][2]" aussiehst, und warum Du das überhaupt in eien Schleife packst(bedenke dass Du bei jedem durchlauf $result überschreibst), das was da oben steht ist exakt identisch zu:

            $result = array_unique($array_kompakt[$anzahl][2]);
            print_r($result);

            array_unique() schmeißt alle Dubletten raus.

            Hast Du z.B
            <?php

            $my_array = Array(
                [0] => 1
                [1] => 1
                [2] => 1
                [3] => 1
                [4] => 1
                [5] => 2
                [6] => 2
                [7] => 2
                [8] => 2
                [9] => 2
            );

            $my_unique_array = array_unique($my_array);
            echo '<pre>';
            print_r($my_unique_array);
            echo '</pre>';

            ?>

            Sollte Dir dann sowas ausgeben:

            Array(
                [0] => 1
                [5] => 2
            )

            Und wenn Du arrays durchlaufen willst schau Dir diesbezüglich mal "foreach" an.

            Grüße
            Andreas

            1. Hi!

              Ich habe den Fehler gefunden.

              Und zwar das hier habe ich in mein array geschrieben:

              $gesamt_liste3   = "1  ;1  ;1  ;1  ;1  ;2  ;2  ;2  ;2  ;2 ";

              ich habe das nun geändert
              $gesamt_liste3   = "1;1;1;1;1;2;2;2;2;2";

              und nun geht es!

              Die leerzeichen hatte ich da nur reingebaut um es übersichtlicher in meinem test zu haben.

              Scheisse war... ;)

              Hast Du z.B

              JA habe ich!

              <?php

              $my_array = Array(
                  [0] => 1
                  [1] => 1
                  [2] => 1
                  [3] => 1
                  [4] => 1
                  [5] => 2
                  [6] => 2
                  [7] => 2
                  [8] => 2
                  [9] => 2
              );

              $my_unique_array = array_unique($my_array);
              echo '<pre>';
              print_r($my_unique_array);
              echo '</pre>';

              ?>

              Sollte Dir dann sowas ausgeben:

              Array(
                  [0] => 1
                  [5] => 2
              )

              Meine Ausgabe ist jedoch

              Array
              (
                  [0] => 1
                  [8] => 2
              )

              Wieso steht 2 bei mir an Position 8 ? Komisch

              1. Hi!

                Sollte Dir dann sowas ausgeben:

                Array(
                    [0] => 1
                    [5] => 2
                )

                Meine Ausgabe ist jedoch

                Array
                (
                    [0] => 1
                    [8] => 2
                )

                Wieso steht 2 bei mir an Position 8 ? Komisch

                Das verstehe ich auch nicht. Gemäß http://de3.php.net/manual/de/function.array-unique.php dürfte das nicht so sein.

                Poste mal die Ausgabe von

                var_dump($my_array);

                und von

                var_dump($my_unique_array);

                Grüße
                Andreas

                1. Hi!

                  Sollte Dir dann sowas ausgeben:

                  Array(
                      [0] => 1
                      [5] => 2
                  )

                  Meine Ausgabe ist jedoch

                  Array
                  (
                      [0] => 1
                      [8] => 2
                  )

                  Wieso steht 2 bei mir an Position 8 ? Komisch

                  Das verstehe ich auch nicht. Gemäß http://de3.php.net/manual/de/function.array-unique.php dürfte das nicht so sein.

                  Poste mal die Ausgabe von

                  var_dump($my_array);

                  und von

                  var_dump($my_unique_array);

                  var_dump($my_unique_array);

                  array(2) {
                    [0]=>
                    string(1) "1"
                    [8]=>
                    string(1) "2"
                  }

                  var_dump($wert_des_anderen_array);

                  array(10) {
                    [0]=>
                    string(1) "1"
                    [1]=>
                    string(1) "1"
                    [2]=>
                    string(1) "1"
                    [3]=>
                    string(1) "1"
                    [4]=>
                    string(1) "1"
                    [5]=>
                    string(1) "2"
                    [6]=>
                    string(1) "2"
                    [7]=>
                    string(1) "2"
                    [8]=>
                    string(1) "2"
                    [9]=>
                    string(1) "2"
                  }

                  Ähh ja naja ist ja auch egal...

                  Trotzdem Danke!!!

                  1. Hallo Hans Dieter Michael Hubertus ;-)

                    Ähh ja naja ist ja auch egal...

                    Trotzdem Danke!!!

                    Naja, vielleicht ist es ein bug.

                    Welche PHP-Version und welches Betriebsystem verwendet Ihr?

                    Grüße
                    Andreas

                    1. Welche PHP-Version und welches Betriebsystem verwendet Ihr?

                      PHP Version 4.2.3

                      1. Hallo Michael,

                        sprechen wir vom gleichen Array das Du mit der for-Schleife in [pref:t=70878&m=407846] erzeugt hast?

                        Grüsse AndreD

                        1. sprechen wir vom gleichen Array das Du mit der for-Schleife in [pref:t=70878&m=407846] erzeugt hast?

                          Ja das selbe Array wie in Deinem Link was sonst!?

                          1. Hi,

                            Ja das selbe Array wie in Deinem Link was sonst!?

                            Ach ich dachte nur das man es in dem Fall vielleicht
                            ein wenig anders lösen könnte, aber so wie es aussieht
                            hast Du wohl schon eine Lösung?

                            Grüsse AndreD

  2. Hi!

    Nun soll das Array ausgeben werden nur doppelte Ausgaben mit gleichen Wert darf es nicht geben. Wie vergleiche ich den Inhalt des Feldes 0 mit 1, 2 3, 4, 5 ...              ?

    Also Ausgabe möchte ich nicht
    1
    1
    1
    1
    1
    2
    2
    2
    2
    2
    stehen haben

    sondern nur

    1
    2

    Aber wie mache ich das? vielleicht gibt es da ja doch eine passenden funktion die ich noch nicht entdeckt habe?

    Man nehme: "Array Funktionen" im PHP-Manual -> http://de3.php.net/array

    Man suche in der Liste nach der Funktion die wie folgt beschrieben wird: "Entfernt doppelte Werte aus einem Array"

    -> Fertig ;-)

    Grüße
    Andreas