Ankündigung

Einklappen
Keine Ankündigung bisher.

Doppelte Wörter im Array zählen und löschen

Einklappen

Neue Werbung 2019

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

  • Doppelte Wörter im Array zählen und löschen

    Hallo zusammen,

    ich habe sehr lange im Internet nach Lösungen für mein Problem gesucht. Da ich nichts finden konnte, wäre es echt lieb, wenn ihr mir helfen könntet.

    Ich möchte eine Cloudtag in PHP simmulieren. Dafür lese ich eine Textdatei ein, trenne die Wörter, sortiere das Array und will anschließend verschiedene Textattribute für Wörter vergeben, die mehrmals vorkommen. Hier liegt nun mein Problem. Ich schaffe es zwar die Wörter zu zählen und sie je nach Anzahl größer darzustellen, aber wenn ein Wort z.B. viermal vorkommt, gibt er es mir auch viermal aus. Ich will diese doppelten Einträge also löschen, aber unset () funktioniert irgendwie nicht.

    Hier mein bisheriger Code mit dem unset()-Versuch:

    PHP-Code:
    <?php

            $arr 
    file("tags.txt"); 
            
            foreach(
    $arr AS $ausgabe){
                
    $tags explode('|'$ausgabe);
            }
            
            
    sort($tagsSORT_NATURAL SORT_FLAG_CASE);
            
            echo 
    '<ul id="cloud">';
            
            
    $matches=array(); 
            foreach(
    $tags as $value){ 
                isset(
    $matches[$value]) ? $matches[$value]++ : $matches[$value]=1
            }
            foreach(
    $tags as $value){
                if(
    $matches[$value] == 1) {
                    echo 
    '<li><a href="/streamingmedia/a/aa071000a.htm" class="smallest">';
                    echo 
    $value"&nbsp;";
                    echo 
    '</a></li>';
                    unset(
    $tags[$value]);
                }
                if(
    $matches[$value] == 2) {
                    echo 
    '<li><a href="/streamingmedia/a/aa071000a.htm" class="small">';
                    echo 
    $value"&nbsp;";
                    echo 
    '</a></li>';
                    unset(
    $tags[$value]);
                }
                if(
    $matches[$value] == 3) {
                    echo 
    '<li><a href="/streamingmedia/a/aa071000a.htm" class="medium">';
                    echo 
    $value"&nbsp;";
                    echo 
    '</a></li>';
                    unset(
    $tags[$value]);
                }
                if(
    $matches[$value] == 4) {
                    echo 
    '<li><a href="/streamingmedia/a/aa071000a.htm" class="large">';
                    echo 
    $value"&nbsp;";
                    echo 
    '</a></li>';
                    unset(
    $tags[$value]);
                }
                if(
    $matches[$value] == 5) {
                    echo 
    '<li><a href="/streamingmedia/a/aa071000a.htm" class="largest">';
                    echo 
    $value"&nbsp;";
                    echo 
    '</a></li>';
                           unset(
    $tags[$value]);
                }
            }
    Schon einmal vielen Dank im vorraus!


  • #2
    Wenn ich dich richtig verstehe suchst du http://php.net/manual/de/function.array-unique.php

    Kommentar


    • #3
      Ich weis ja nicht wie deine tags.txt aussieht, aber hiermit

      PHP-Code:
              
              
      foreach($arr AS $ausgabe){
                  
      $tags explode('|'$ausgabe);
              } 
      überschreibst du $tags mit jeden Durchlauf und übrig dürfte nur die letzte Zeile bleiben.
      PHP-Klassen auf github

      Kommentar


      • #4
        Danke @cycap, mit Array unique hat das super geklappt!

        @jspit: Ja, mit dem Problem kämpfe ich gerade ... hatte die Textdatei bisher als nur eine Zeile, aber das ist doch sehr umständlich. Ich kann zwar die Ausgabe in einem zweidimensionalen Array speichern, will aber eigentlich nur ein eindimensionales haben ...

        Kommentar


        • #5
          Warum dann nicht ein Tag per Zeile?
          Zitat von nikosch
          Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

          Kommentar


          • #6
            @tkausl: Das wäre ziemlich unübersichtlich, da ich sehr viele Tags habe ... aber ich habs inzwischen hinbekommen!

            Kommentar

            Lädt...
            X