20 Variablen auf Gleichheit überprüfen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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?

    Comment


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

      Comment


      • #4
        was steht in den variablen?

        Comment


        • #5
          Achso....

          Integer - also ganzzahlen.

          Comment


          • #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?

            Comment


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

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

              Comment


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

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

                Comment


                • #9
                  OffTopic:
                  Was ich sag...

                  Comment


                  • #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!

                    Comment


                    • #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.

                      Comment


                      • #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 . " ";
                        }
                        ?>
                        Last edited by uwe59; 16-06-2007, 19:12.

                        Comment


                        • #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.

                          Comment

                          Working...
                          X