Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Array "Undefined index" - Problem

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Array "Undefined index" - Problem

    Hallo Leute,
    ich möchte mittels eines Array herausfinden wie oft Wörter in meinem Text vorkommen.

    Dazu schreibe ich meinen Text in ein Array:
    PHP-Code:
    $textarray explode(" ""eins zwei drei eins zwei zwei"); 
    Danach speichere ich jedes Einzelne Wort in einem neuen Array und zähle gleichzeitig wie oft das Wort vorgekommen ist:
    PHP-Code:
    $testarray    = array();
    for(
    $i=0; isset($textarray[$i]); $i++) {
    $testarray[$textarray[$i]]++;

    Mit dem folgendem Code sortiere ich das Array absteigend und lasse mir alles ausgeben:
    PHP-Code:
    ksort($testarray);
    arsort($testarray);
    foreach(
    $testarray as $Schluessel=>$Wert) {
        echo
    "<li>",$Schluessel," (",$Wert,")</li>";

    Das alles funktioniert einwandfrei!!!

    Trotzdem erhalte ich den Fehlercode:
    Notice: Undefined index: eins....
    Notice: Undefined index: zwei....
    .....

    Diese Zeile stört ihn, obwohl es funktioniert:
    PHP-Code:
    $testarray[$textarray[$i]]++; 
    Woran kann das liegen? Übersehe ich etwas??


  • #2
    Kleiner Tipp: Anstatt deine for-Schleife kannst du einfach foreach() verwenden.

    Ansonsten wenn dein $testarray am Anfang leer ist und du dann $testarray['eins']++; machst, dann steht ja bei dem Key "eins" noch kein Wert im Array. Daher kommt "undefined index". Du solltest die Werte immer vorbelegen wenn sie noch nicht existieren.

    PHP-Code:
    <?php
    $testarray 
    = array();
    foreach (
    $textarray as $word) {
        if (
    array_key_exists($word$testarray)) {
            
    $testarray[$word]++;
        } else {
            
    $testarray[$word] = 1// falls der Key noch nicht existiert den Wert auf 1 setzen
        
    }
    }
    Außerdem solltest du die Arrays vielleicht besser benennen, testarray und textarray auseinander zu halten ist schwierig.

    Hinweis:
    [!] Für das Highlighting von PHP-Code sind die [php]-Tags zuständig. Bitte ändere das noch.

    Kommentar


    • #3
      Vielen Dank für die schnelle Antwort. FUnktioniert einwandfrei.

      Das mit den Code Tags ist mir soweit klar. Aber ich habe hier keinerlei Auswahlmöglichkeiten. Aus anderen FOren kenne ich das so, dass man die entsprechenden Optionen anklicken kann. Muss man "[php]" hier händisch eingeben?

      Kommentar


      • #4
        Zitat von go1denboy Beitrag anzeigen
        Woran kann das liegen? Übersehe ich etwas??
        $testarray[$textarray[$i]] existiert beim ersten Mal eben nicht, entsprechend wird null++ ausgeführt, was den Fehler ausführt.

        Korrekt:
        PHP-Code:
        $key $textarray[$i];
        if (!
        array_key_exists($key$testarray)) {
          
        $testarray[$key] = 0;
        }
        $testarray[$key]++; 
        "Mein Name ist Lohse, ich kaufe hier ein."

        Kommentar


        • #5
          @go1denboy: Ist hier genauso. Schon das PHP Symbol im WYSIWIG Editor unter dem Punkt "Highlight" entdeckt?

          Wolf29
          while (!asleep()) sheep++;

          Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

          Kommentar


          • #6
            Hey Leute bei mir wird der WYSIWIG Editor Editor nicht angezeigt.

            Benutze die neuste FF Version. Sehr seltsam.

            Kommentar


            • #7
              Zitat von go1denboy Beitrag anzeigen
              Sehr seltsam.
              Ein Fall für Akte X?

              *Schauermusikeinspiel*
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                http://www.php.de/profile.php?do=editoptions
                schau mal ganz runter, welcher editor eingestellt ist

                Kommentar


                • #9
                  Dank Dir. Daran hats gelegen.

                  Kommentar

                  Lädt...
                  X