Arrays- logisches Problem?

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

  • Arrays- logisches Problem?

    Hallo,ihr alle,die immer noch wach seid
    Ich versuche seit ein paar Stunden den Fehler in meinem Code zu finden.Es geht um ein mehrdimmensionales Array- ich will zu jeder Zahl in den Subarrays eine Nummer zuordnen(die gleiche Zahlen kriegen diegleiche Nummer).Das Problem ist,dass mein Programm nur einmal die Nummer bei gleichen Zahlen zählt.
    Beispiel:
    Zu den Array $ips = array(127,132,127,128,128);
    Nach dem sort($ips) kriege ich array(127,127,128,128)
    Wenn mein Programm richtig funktionierte ,musste als Ergebnis folgendes kommen:
    $id_array= array(1,1,2,2,3)
    Aber es kommt nur :
    $id_array= array(1,2,3)

    Wo mache ich Fehler?

  • #2
    in dem code, den wir nicht sehen können.

    Kommentar


    • #3
      Zu den Array $ips = array(127,132,127,128,128);
      Nach dem sort($ips) kriege ich array(127,127,128,128)
      Und wohin bitte verschwindet der zweite Index???

      Kommentar


      • #4
        Danke,dass ih r geantwortet habt.
        Ich weiss nicht warum ihr den Code nicht sehen könnt.Deswegen schreibe ich es hier:

        PHP-Code:
        <?php
        error_reporting
        (E_ALL);

        $ips = array(127,132,127,128,128);
        $ips_1= array(129,127,130,130,131);
        $ips_2= array(130,131,127,131,131);
        $sid_arr=array("0"=>$ips,
                                 
        "1"=>$ips_1,
                                 
        "2"=>$ips_2);
        $cnt_array=count($sid_arr);
        //echo $cnt_array;
        $i=0;
        $row=0;
        $counter=0;
        $sid=0;
        $id_arr=array();
        for(
        $row=0;$row<$cnt_array;$row++){
             
        sort($sid_arr[$row]);// es ist einfacher für die Numeration,wenn die Zahlen sortiert sind
                
        for($i=0;$i<5;$i++){
             
        $j=$i+1;
                 if (
        $sid_arr[$row][$i]==$sid_arr[$row][$j]){
                 
        $sid $counter;
                  }
                 else {
                  
        $counter =++$counter;
                  
        $sid $counter;
                  
        $id_arr[$row][] = $sid;

                 }
             }
        }
        print_r($sid_arr);
        echo 
        "<br>";
        print_r($id_arr);
        echo 
        "<br>";
        ?>
        Ich hoffe,jetzt ist es besserIhr könnt das gleich ausprobieren,um zu sehen was genau kommt...
        Grüsse
        Zuletzt geändert von pinka_l; 09.01.2005, 17:12.

        Kommentar


        • #5
          http://www.php-resource.de/forum/sho...threadid=47906

          Lesen!

          Kommentar


          • #6
            Sorry,TobiaZ,
            dieses Mal bin ich schuldig.Jetzt habe ich gelesen und für nächstes Mal weiss ich becheid...

            Wegen deiner Frage "Und wohin bitte verschwindet der zweite Index???"
            daoben: der zweite Index verschwindet nicht,ich habe Schreibfehler gemacht.
            Also nach dem sort($ips) kommt $ips=array(127,127,128,128,132)

            Kommentar


            • #7
              Jetzt habe ich gelesen und für nächstes Mal weiss ich becheid...
              ... und du nutzt die editfunktion um es anzupassen, da ich den quelltext ansonsten nicht lesen werde...

              Kommentar


              • #8
                wenn's ein semantischer fehler ist, dann musst du schon wohl oder übel erklären, was du eigentlich erreichen willst, woher die daten kommen und was sie bedeuten.

                ansonsten kann ich unformatierten code schlecht lesen, denke aber, dass du tobiazs rat nicht befolgt hast - dort steht auch was über fehlermeldungen (bzw. notices), die es hier geben müsste.

                PHP-Code:
                $counter =++$counter
                gehört wohl auch nicht zu den genialsten zeilen dieser welt.

                Kommentar


                • #9

                  Kommentar


                  • #10
                    http://schattenbaum.net/php/operatoren.php <-
                    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                    var_dump(), print_r(), debug_backtrace und echo.
                    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                    Kommentar


                    • #11
                      Entschuldigung für die verspätete Antwort,aber das Internet in meinem Studentenwohnheim ist sehr schlecht.Sonst hätte ich schneller den Code editieren...
                      Was ich von dem Code will: zu jeder Zahl in jedem Subarray(von dem mehrdimmensionalen Array) eine zugehörige Nummer zuordnen(die gleichen Zahlen in einem SubArray krigen die gleiche Nummer),d.h
                      Subarray_1: 127,127,128,128,132 kriegt
                      Nummer: 1 1 2 2 3
                      Subarray_2: 127, 129, 130,130,131
                      Nummer: 4 5 6 6 7
                      Subarray_3: 130,131,131....
                      Nummer : 8 9 9 ...

                      Das Problem mit meinem Code ist es,dass die zugehörige Nummer zu der gleichen Zahlen nur 1 Mal vorkommt:

                      Subarray_1: 127,127,128,128,132 kriegt
                      Nummer: 1 2 3
                      Wo ist der Fehler?

                      Kommentar


                      • #12
                        poste mal n print_r von dem array das du hast, und eins von dem, wie es aussehen soll. evtl. noch eins, von dem, wie es aktuell ist.

                        Kommentar


                        • #13
                          Ich kriege folgendes Ergebnis(ist falsch):
                          Array ( [0] => 127 [1] => 127 [2] => 128 [3] => 128 [4] => 132 )
                          Array ( [0] => 1 [1] => 2 [2] => 3 )
                          Array ( [0] => 127 [1] => 129 [2] => 130 [3] => 130 [4] => 131 )
                          Array ( [0] => 4 [1] => 5 [2] => 6 [3] => 7 )
                          Array ( [0] => 127 [1] => 130 [2] => 131 [3] => 131 [4] => 131 )
                          Array ( [0] => 8 [1] => 9 [2] => 10 )

                          Das korrekte Ergebnis muss so aussehen:

                          Array ( [0] => 127 [1] => 127 [2] => 128 [3] => 128 [4] => 132 )
                          Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 2 [4] => 3 )

                          Array ( [0] => 127 [1] => 129 [2] => 130 [3] => 130 [4] => 131 )
                          Array ( [0] => 4 [1] => 5 [2] => 6 [3] => 6 [4] => 7 )

                          Array ( [0] => 127 [1] => 130 [2] => 131 [3] => 131 [4] => 131 )
                          Array ( [0] => 8 [1] => 9 [2] => 10 [3] => 10 [4] => 10 )

                          Kommentar


                          • #14
                            zuviel zauber ist nicht gut.

                            EDIT:
                            quatsch, sorry

                            Kommentar


                            • #15
                              und wenn du mir jetzt noch sagst, wo genau das zugeordnet wird,

                              Kommentar

                              Lädt...
                              X