benötige spezielle php variablenausgabe von array......

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

  • benötige spezielle php variablenausgabe von array......

    Hi Leute,
    ich hab schon wieder so ein Array-Problem bei dem ich nicht mehr weiterkomme.
    Ich versuche mittels der array-funktion folgende txt auszulesen:

    Wolfi;200
    Enno;173
    Erich;150
    Hoschi;700
    Martin;614
    Thomas;592
    Richi;397
    Alex;541
    Manfred;341
    Tanja;254


    php-datei:

    $fp = fopen("data.txt","r");
    while($data = fgets($fp,1024)){ // zeile für zeile einlesen
    $data = explode(";",$data); // jede zeile aufsplitten
    $hitlist[$data[0]] = $data[1]; // ein array erzeugen mit allen spielern
    }
    fclose($fp);

    arsort($hitlist); // rückwärts sortieren

    function showit($a,$b){
    echo $b." hat ".$a." Punkte erreicht.";
    echo "<br>";
    }
    array_walk($hitlist,'showit'); // für jeden array eintrag die function showit() aufrufen

    Die php-datei müßte nun so abgewandelt werden, dass ich folgene Variablenausgabe bekomme:

    name1=Enno&credits1=1000&name2=Thomas&credits2=900&name3=Erich&credits3=800
    &name4=Wolfgang&credits4=700&name5=Martin&credits5=600&name6=Willi&credits6=500
    &name7=hubert&credits7=400&name8=rudolf&credits8=300&name9=franz&credits9=85
    &name10=maximilian&credits10=50&max=700&min=150

    Das & dazwischen ist ebenfalls absolut notwendig.
    Kann mir da jemand helfen - bin mit meinem Latein am Ende.

    Bye
    $PHP resource 4ever$

  • #2
    kann mir denn niemand helfen??? Würde echt dringend 'ne Antwort benötigen.

    <<<Please>>>
    $PHP resource 4ever$

    Kommentar


    • #3
      Code:
      $z=0;
      while (list ($key, $val) = each ($hitlist)) {
        if ($z>0) echo "&";  
        echo $key."=".$val;    // kannst auch "$key=$val" schreiben
        $z++;
      }
      ersetz damit mal deine Funktion showit() und den Aufruf durch array_walk.

      Kommentar


      • #4
        Danke BrainBug, hab's grad mit php-edit laufen lassen.
        Es sieht jetzt folgendermaßen aus:
        Hoschi=700
        &Martin=614
        &Thomas=592
        &Alex=541
        &Richi=397
        &Manfred=341
        &Tanja=254
        &Wolfi=200
        &Enno=173
        &Erich=150

        Die Variablen werden aber von einem Flashfile aufgenommen weshalb ich es noch in dieser Form bräuchte: name1=Hoschi&credits1=700&name2=Thomas&credits2=592 usw.

        Kann man das irgendwie so hinkriegen???
        $PHP resource 4ever$

        Kommentar


        • #5
          wenn du den echo-Befehl benutzt und nach der einzelnen Ausgabe kein \n oder <br> ausgibst, müßte es eigentlich funktionieren, d.h. so wie ich es dir oben geschrieben habe muß es in eine Zeile geschrieben werden.

          Kommentar


          • #6
            Aber im code benutze ich ja nie \n oder <br> ??
            Wenn es dann in eine Zeile geschrieben wird, bräuchte ich aber noch name1 und credits1 etc. jeweils vor dem Namen und den erreichten Punkten stehen sonst kann ich es in Flash nicht unterscheiden.
            $PHP resource 4ever$

            Kommentar


            • #7
              achso, sorry, hatte deine Anmerkung nicht ganz genau gelesen, aber jetzt ist klar, was du willst
              Code:
              $z=0;
              while (list ($key, $val) = each ($hitlist)) {
                if ($z>0) echo "&";  
                echo "name".($z+1)."=".$key."&credit."($z+1)."=".$val;
                $z++;
              }
              viel Spaß damit...

              Kommentar


              • #8
                jetzt bekomme ich aber jedesmal von php-edit folgende Fehlermeldung:

                <b>Parse error</b>: parse error, expecting `','' or `';'' in <b>E:\PHP\highscorelesen.php</b> on line <b>16</b><br>

                Line 16 entspricht:
                echo "name".($z+1)."=".$key."&credit."($z+1)."=".$val;
                $PHP resource 4ever$

                Kommentar


                • #9
                  hi

                  dein umbruchproblem kriegst du in den griff, wenn du beim auslesen der datei alle ueberfluessigen leerzeichen "trim"st und die \n und \r entfernst ...

                  Kommentar


                  • #10
                    nachtrag:

                    zeile 16 ALT: echo "name".($z+1)."=".$key."&credit."($z+1)."=".$val;

                    zeile 16 NEU: echo "name".($z+1)."=".$key."&credit".($z+1)."=".$val;

                    der punkt nach &credit war's ...
                    viel spass

                    Kommentar


                    • #11
                      aber ich hab doch gar keine solche zeichen im code und trotzdem macht er immer einen zeilenumbruch?!?!
                      $PHP resource 4ever$

                      Kommentar


                      • #12
                        aber du hast doch zeilenumbrueche in der quelldatei ...

                        zeile eins
                        zeile zwei

                        und nicht
                        zeile einszeilezwei

                        verstanden?

                        Kommentar


                        • #13
                          echo "name".($z+1)."=".$key."&credits".($z+1)."=".trim($val);

                          müßte eigentlich schon reichen, oder?!

                          Kommentar


                          • #14
                            Supi Leute, funtzt jetzt so wie ich's brauch. Ich wäre sicher noch drei Wochen gesessen (ohne Ergebnis!).

                            Hab da aber noch 'ne Kleinigkeit vergessen. Und zwar brauche ich an das ganze noch

                            &max=700&min=150

                            drangehängt.

                            Hab's mit der max und min Funktion von php schon probiert. Ich weiß allerdings nicht, welche Variable ich übergeben muss. Ich glaube, es ist $hitlist => innerhalb der If-Anweisung nimmt er mir das aber nicht - oder mach ich was falsch?!?!
                            $PHP resource 4ever$

                            Kommentar


                            • #15
                              hä? Geht's noch kryptischer?

                              Von wo kommen die Min und Max-Werte? Aus der Tabelle oder einfach der min. und max. Wert der hits?

                              falls ja, kannst du entweder beim Rausschreiben in der While-Schleife vergleichen, ob der $val kleiner dem seitherigen Min-Wert ist und wenn ja, dann speicherst du diesen in der Variable und genauso für Max-Wert.

                              Achherrje, vergiß es, du liest ja aus einem File. Vergiß die Frage oben mit der Tabelle und so.
                              Also:
                              Code:
                              $z=0;
                              while (list ($key, $val) = each ($hitlist)) {
                                $val=trim($val);
                                if ($z>0) {
                                   echo "&";
                                   $minwert=$val;
                                   $maxwert=$val;
                                   }
                                else {
                                   if ($val<$minwert) $minwert=$val;
                                   if ($val>$maxwert) $maxwert=$val;
                                   }  
                                echo "name".($z+1)."=".$key."&credits".($z+1)."=".$val;
                                $z++;
                              }
                              echo "&min=".$minwert."&max=".$maxwert;
                              am Ende sollte der größte Wert in $maxwert und der kleinste in $minwert stehen.

                              Kommentar

                              Lädt...
                              X