20 Variablen auf Gleichheit überprüfen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 20 Variablen auf Gleichheit überprüfen

    Hallo.

    Ich habe ein kleines Problem. Ich habe 20 Variablen, die mir von einem externen Programm zur Verfügung gestellt werden, welche verglichen werden müssen. Dabei darf keine Variable den gleichen Wert haben.

    also:

    PHP-Code:
    if ($var1<>$var2) {
    if (
    $var1<>$var3) {
    if (
    $var1<>$var4) {
    if (
    $var1<>$var5) {
    ...
    if (
    $var19<>$var20) {
    //alle ungleich
    }
    }
    }
    }

    Gibt es da einen einfacheren eleganteren Weg? Ich habe der Erklärung halber var12, etc benutzt... in Wirklichkeit sind die nicht nummeriert, sondern heißen z.B. $wf, $st, etc. Leider kann der Name der Variablen nicht verändert werden. Sonst würde ich auf Arrays zurückgreifen.

    Danke für eure Antworten,

    Alex

  • #2
    datentyp?

    Kommentar


    • #3
      Das Programm, welches die Parameter übergibt? Eine kompilierte EXE. Oder meinst Du das Script? Das läuft unter PHP5

      Kommentar


      • #4
        was steht in den variablen?

        Kommentar


        • #5
          Achso....

          Integer - also ganzzahlen.

          Kommentar


          • #6
            Code:
            map = array(var1, var2, var3, ...)
            sortiere(map) // z.b. aufsteigend
            
            for(i=0; i<n-1; i++){
             if(map[i] = map[i+1])
                print "zwei variablen sind gleich"
            }
            idee klar?

            Kommentar


            • #7
              Alternativ alle Daten in ein array. (wie gehabt)

              dann array_unique() und dann mit count() die anzahl überprüfen.

              Kommentar


              • #8
                Kürzere Form:
                PHP-Code:
                $array = array($v1$v2, .....);

                if (
                count($array) != count (array_unique($array)))
                  echo 
                "Doppelte Werte"

                Kommentar


                • #9
                  OffTopic:
                  Was ich sag...

                  Kommentar


                  • #10
                    aah... dankeschön. Ja, klar! Idee ist klar. Eine Sortierung brauch ich eigentlich nicht. Aber über diesen Array-Weg kann ich wenigstens seperate Fehlermeldungen ausgeben. Ansonsten wäre es wirklich sehr mühsam geworden. Thx!

                    Kommentar


                    • #11
                      müsste doch auch so gehen, oder?

                      PHP-Code:
                      $arrayname=array($n1,$n2,bla);
                      $wertbez=array("Error 1","Error 2","Error 3");

                      for (
                      $i=0$i<count($arrayname)-1$i++) {
                      for (
                      $j=i+1$j<count($arrayname)-1$j++) {
                      if (
                      $arrayname[i]==$arrayname[j]) {
                      $error1=$wertbez[i];
                      $error2=$wertbez[j];
                      }
                      }
                      }
                      if (isset (
                      $error1)) echo $error1." und ".$error2." sind gleich. Abbruch!" 
                      Weil auf diese Weise könnte ich dem Benutzer sein Problem mitteilen. Ansonsten würde es bei 20 Variablen eine Sucherei nach dem Doppelten Eintrag.

                      Kommentar


                      • #12
                        Man kann sich auch einen Knoten programmieren, wenn man sich nicht mal mit den Array-Funktionen beschäftigt
                        PHP-Code:
                        <?
                        $array = array(1,2,3,4,4,5,7,1,6);
                        $array1 = array_unique($array);

                        $diff = array_diff_assoc ($array,$array1);

                        if ($diff !== false && count($diff))
                        {
                            echo "Folgende Werte sind doppelt: ";
                            
                            foreach ($diff as $value)
                              echo $value . " ";
                        }
                        ?>
                        Zuletzt geändert von uwe59; 16.06.2007, 20:12.

                        Kommentar


                        • #13
                          abgesehen von den parseerrors ist der ansatz ne möglichkeit.

                          musst natürlich aufpassen, dass $i und $j ungleich sind, ansonsten gibts nen fehler wo gar keiner ist.

                          EDIT:
                          Ich würde auch zu schnittmengen tendieren.

                          Kommentar

                          Lädt...
                          X