Arrays vergleichen und alle Selben ausgeben...

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

  • Arrays vergleichen und alle Selben ausgeben...

    hey! ich möchte aus einer Datenbank (Textdatei) Arrays auslesen, und überprüfen ob bestimmte Namen in den Arrays vorhanden sind oder nicht.

    Das hier funktioniert zwar, aber das ist überhaupt nicht schön!
    Ich möchte nicht für jeden Namen eine eigene If abfrage erstellen.
    Geht das nicht irgendwie so, das verglichen wird:
    wenn $element_zeichen[1] aus zeile 1 gleich Zeile 2, prüfen ob zeile 2 gleich zeile 3 usw. bis ein neuer Name gefunden wurde der eben nicht einem vorgänger entspriocht, und nachher sollen alle gefundenen ausgegeben werden...

    vielleicht geht das ja irgendwie arrays darauf untersuchen wieviele unterschiedliche datensätze es gibt und welche das im einzelnen sind...

    PHP-Code:
    $zeichen_file file("zeich.txt");
    $zeichen_count count("$zeichen_file ");
    $zahl_zeich1=0;$zahl_zeich2=0;$zahl_zeich3=0;
    for(
    $s 0$s <= ($zeichen_count)-1$s++) {
      
    $element_zeichen explode("|"$zeichen_file[$s])
      if(
    strstr($element_zeichen[1],"hans")) { $zahl_zeich1++; } 
      if(
    strstr($element_zeichen[1],"fritz")) { $zahl_zeich2++; } 
      if(
    strstr($element_zeichen[1],"buller")) { $zahl_zeich3++; } 
    }
    if(
    $zahl_zeich1 0) { echo "Hans";}
    if(
    $zahl_zeich2 0) { echo "Fritz";}
    if(
    $zahl_zeich3 0) { echo "Buller";} 

  • #2
    Also du hast eine Textdatei, die etwa so aussieht:
    Code:
    hans
    hans
    fritz
    hans
    buller
    fritz
    hans
    und willst daraus ein Array kriegen, das so aussieht:
    PHP-Code:
    $array[0] = 'hans';
    $array[1] = 'fritz';
    $array[2] = 'buller'
    Also da gibt es einmal die Möglichkeit mit in_array (für die If-Abfrage in deiner Schleife). Oder es gibt die Möglichkeit, das Array einfach andersrum aufzubauen:
    PHP-Code:
    $array['hans'] = '';
    $array['fritz'] = '';
    $array['buller'] = ''
    Musst du gucken, ob das für dich passt. Dabei helfen kann dir auch array_flip
    hopka.net!

    Kommentar


    • #3
      array_count_values?
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        hmm mit:

        PHP-Code:
        $array = array ("test""abc""test""test""abc");
        $x array_count_values($array);
        echo 
        $x[0];
        echo 
        $x[1];
        echo 
        $x[2]; 
        komm ich nicht weiter, aber das sieht schon sehr nach der Lösung aus, array_count_values mein ich jetzt...

        ich weiß nich genau wie ich an die ergebnisse rankomme, bzw weiß ich nicht wie ich den Befehl richtig einsetzen kann...

        weil
        Array ( [hans] => 3 [fritz] => 2 [buller] => 4)
        so das Array aussieht was durch array_count_values ausgespuckt wird, wenn ich mit

        PHP-Code:
        $array = array ("test""abc""test""test""abc");
        print_r(array_count_values($array)); 
        ausgebe...

        Wie kann ihc denn jetzt an die Aufgewerteten Daten?

        Kann mir jemand weiterhelfen?
        Zuletzt geändert von israelsson; 17.01.2005, 21:33.

        Kommentar


        • #5
          dann weise das ergebnis von array_count_values einem array zu, statt es mit print_r auszugeben.

          Kommentar


          • #6
            meinst du so?

            PHP-Code:
            $array = array ("test""abc""test""test""abc");
            $array array_count_values($array); 
            echo 
            $array[test];
            echo 
            $array[abc]; 
            Aber dann werden mir die Zahlen ausgegeben, wie oft das Array vorhanden ist, ich möchte aber den Namen des Arrays haben...

            Ich möchte nachher rausbekommen, in dem Array ist der Name:

            "test" und "abc" vorhanden... wie oft sie vorhanden sind, brauch ich eigentlich garnicht wissen...

            kann mir nicht jemand sagen wie ich an die Namen rankomme?

            Kommentar


            • #7
              gedanken klar formulieren ist kein verbrechen. versuch's ruhig.

              also
              am eingang:
              Code:
              hans
              hans
              fritz
              hans
              buller
              fritz
              hans
              am ausgang:
              Code:
              hans
              fritz
              buller
              so?

              Kommentar


              • #8
                genau so

                Kommentar


                • #9
                  array_unique()

                  Kommentar


                  • #10
                    PHP-Code:
                    $input = array ("hans","peter","fritz","fritz","hans","peter","peter","peter","fritz");
                    $result array_unique ($input);
                    echo 
                    "$result[0]<br>"// gibt hans aus
                    echo "$result[1]<br>"// gibt peter aus
                    echo "$result[2]<br>"// gibt fritz aus
                    echo "$result[3]<br>"// gibt nichts aus, weil nur 3 vorkommen...
                    echo "$result[4]<br>"// gibt auch nichts aus, weil nur 3 vorkommen... 
                    Danke! Das klappt

                    Kommentar


                    • #11
                      also das funzt ja soweit!

                      Aber nun hab ich eine Textdatei:
                      • |franz|bla1|bla2|bla3|bla4|
                        |buller|bla5|bla6|bla7|bla8|
                        |franz|bla9|bla10|bla11|bla12|
                        |heinz|bla13|bla14|bla15|bla16|
                        |franz|bla17|bla18|bla19|bla20|
                        |franz|bla21|bla22|bla23|bla24|
                        |buller|bla25|bla26|bla27|bla28|
                        |heinz|bla29|bla30|bla31|bla32|
                        |heinz|bla33|bla34|bla35|bla36|
                        |buller|bla37|bla38|bla39|bla40|
                        |heinz|bla41|bla42|bla43|bla44|


                      und möchte dort
                      PHP-Code:
                      $element explode("|"$textdatei[$i]) 
                      das $element[1] jeweils aussorterien, nach den Verfahren von oben.

                      Jetzt muss ich also irgendwie die ganzen Elemente zusammen in ein neues Array packen oder?

                      Also nach dem motto

                      Array ($element[1], $element[1] , $element[1] , ...)

                      nur wie mach ich das dann, das nachher mein Array so aussieht:

                      Array(franz, buller, franz, heinz, franz, franz, buller, hans, hans...)

                      Dann kann ich das Array so wie vorhin, gant normal aussorteren...

                      Aber wie komm ich dahin? oder gibt es ne andere Möglichkeit das zu durchsuchen?

                      vielleicht gar nich über explode() oder so?

                      Kommentar


                      • #12
                        naja..

                        1. nach zeilenumbrüchen exploden, bzw direkt file() verwenden, dann nach "|" exploden. so ist das erste element eines jeden arrays (übrigens 0 und nicht 1) der name.

                        2. die namen in der gleichen schleife noch in ein leeres arrays speichern.
                        Zuletzt geändert von penizillin; 17.01.2005, 22:55.

                        Kommentar


                        • #13
                          stimmt ja garnicht, schau dir mal meine Textdatei genau an!

                          wenn dort getrennt wird | ist das erste Element garnicht da, denn dadurch das jede zeile mit einem Trennstrich beginnt ist das erste Element wohl [1]...

                          egal das is ja auch hier unwichtig, wie kann ich denn in der selben Schleife in ein leeres Array speichern?

                          kannst du mir einen kleinen beispielcode geben?

                          Kommentar


                          • #14
                            kannst du mir einen kleinen beispielcode geben?
                            fang du an.

                            Kommentar


                            • #15
                              ok

                              PHP-Code:
                              $datei file("datei.txt");
                              $count count($datei);
                              for(
                              $i 0$i <= $count-1$i++) {
                              $element explode("|"$datei[$i]);
                              $element[1]; // soll jetzt in ein Array gespeichert werden, aber wie?
                              $array = array("$element[1]"); // etwa so?

                              Kommentar

                              Lädt...
                              X