Variable aus foreach-Schleife außerhalb der Schleife nicht verwendbar

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

  • Variable aus foreach-Schleife außerhalb der Schleife nicht verwendbar

    Hallo!

    Ich habe folgendes Problem. Ich benötige den Wer aus der Variable $gewinner außerhalb der foreach-Schleife. Zum testen habe ich es einfach einmal mit echo ausgegeben. Schreib ich das echo innerhalb der Schleife, zeigt es mir die Werte an, schreib ich es außerhalb der Schleife, zeigt es mir nichts an. Ich benötige die Werte dann aber für eine if-else Abfrage außerhalb der Schleife. Und nein, die if-Abfrage kann ich nicht in die Schleife geben, dann würde es die Abfrage auch so oft abhandeln, wieviele Einträge sind im Array.

    PHP-Code:
        $ziehungszahl rand(1,10);
        
    $timestamp time();
        
    $datum date("d.m.Y",$timestamp);
        
    $uhrzeit date("H:i",$timestamp);    
        
    $teilnehmerliste file("tipps.txt");

        foreach(
    $teilnehmerliste as &$teilnehmer){
            
    $teilnehmer explode("|",$teilnehmer);
            
    $teilnehmer = array($teilnehmer[0] => $teilnehmer[1]);
        
            
    $gewinner array_search($ziehungszahl$teilnehmer); 
        
            }
        
            echo 
    $gewinner

  • #2
    PHP-Code:
    $teilnehmer = array();

    foreach(
    file("tipps.txt") as $zeile) {
        list(
    $name$zahl) = explode("|"$zeile);
        
    $teilnehmer[$name] = $zahl;
    }

    $gewinner array_search($ziehungszahl$teilnehmer); 
    Oder meinst du eher so?

    PHP-Code:
    $gewinner = array();

    foreach(
    file("tipps.txt") as $zeile) {
        list(
    $name$zahl) = explode("|"$zeile);
        if (
    $zahl == $ziehungszahl) {
            
    $gewinner[] = $name;
        }

    Ist natürlich sehr schwer zu helfen, wenn man nicht weiß, was du überhaupt machen willst.
    Zuletzt geändert von h3ll; 30.06.2009, 14:12.

    Kommentar


    • #3
      Ok werd mal erklären was ich genau machen will:

      ich habe ein text file darin sind tipps mit name und gewinnzahl zB als
      Markus|4
      Anton|5
      Helga|10

      ich möchte nun eine ziehung durchführen mit einer zufallszahl zw. 1-10 und wenn also jemand, oder mehr richtig getippt haben, dann soll es in ein anderes textfeld schreiben "Ziehung vom 20.6.2009 um 12:30 Uhr: Gewinner: Markus, Anton - Gewinnzahl: 4"

      Ich hätte eben die Werte in ein Array gespeichert, und dieses mit array_search nach der Zufalszahl gesucht. Wenn jemand diese Zahl getippt hat soll es ins file den Text von oben schrieben..


      edit: so du hast mir aber jetzt schon sehr weitergeholfen, danke!! mit dem ersten codebeispiel bekomm ich schon mal einen namen raus.. toll wäre auch noch wenn ich alle namen rausbekommen wenn mehrere die gleiche zahl getippt haben.. so bekomm ich nur den raus, der als erster diese zahl getippt hat
      Zuletzt geändert von Tiafe; 30.06.2009, 14:32.

      Kommentar


      • #4
        Natürlich ist $gewinner in deinem Beispiel auch nach der Schleife noch vorhanden - sonst würdest eine entsprechende Meldung bekommen.
        Wahrscheinlich ist der Inhalt aber einfach nur false, was du mit einem echo nicht "siehst" - var_dump bspw. zeigt es dir aber an.

        und wenn also jemand, oder mehr richtig getippt haben, dann soll es in ein anderes textfeld schreiben "Ziehung vom 20.6.2009 um 12:30 Uhr: Gewinner: Markus, Anton - Gewinnzahl: 4"
        Und der Anton mit Wert 5 in der Textdatei gewinnt bei dir mit einer gezogenen 4 also ...?

        Ich hätte eben die Werte in ein Array gespeichert, und dieses mit array_search nach der Zufalszahl gesucht. Wenn jemand diese Zahl getippt hat soll es ins file den Text von oben schrieben.
        Dazu steht das array_search bei dir aber an einer unsinnigen Stelle.

        $teilnehmer wird bei foreach per pereference angesprochen - warum?
        Und dann machst du aus genau der gleichen Variablen ein Array - das im nächsten Schleifendurchlauf dann wieder vom nächsten durch foreach bereitgestellten Wert überschrieben wird.

        Das passt vorne und hinten nicht - du solltest wirklich mal versuchen, mit etwas mehr Logik an solche Sachen heranzugehen.


        Wenn du die Zufallszahl bereits vor der Schleife gezogen hast - warum schaust du dann nicht innerhalb der Schleife, ob der Nutzer aus der aktuellen Zeile diese Zahl hat. Und wenn ja, dann gibst du ihn entweder aus, oder legst ihn dann in einem Array ab.

        Und nein, die if-Abfrage kann ich nicht in die Schleife geben, dann würde es die Abfrage auch so oft abhandeln, wieviele Einträge sind im Array.
        Die Abfrage gehört m.E. sehr wohl in die Schleife - nur sollte sie eine vernünftige Bedingung prüfen.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Zitat von Tiafe Beitrag anzeigen
          Ok werd mal erklären was ich genau machen will:

          ich habe ein text file darin sind tipps mit name und gewinnzahl zB als
          Markus|4
          Anton|5
          Helga|10

          ich möchte nun eine ziehung durchführen mit einer zufallszahl zw. 1-10 und wenn also jemand, oder mehr richtig getippt haben, dann soll es in ein anderes textfeld schreiben "Ziehung vom 20.6.2009 um 12:30 Uhr: Gewinner: Markus, Anton - Gewinnzahl: 4"

          Ich hätte eben die Werte in ein Array gespeichert, und dieses mit array_search nach der Zufalszahl gesucht. Wenn jemand diese Zahl getippt hat soll es ins file den Text von oben schrieben..


          edit: so du hast mir aber jetzt schon sehr weitergeholfen, danke!! mit dem ersten codebeispiel bekomm ich schon mal einen namen raus.. toll wäre auch noch wenn ich alle namen rausbekommen wenn mehrere die gleiche zahl getippt haben.. so bekomm ich nur den raus, der als erster diese zahl getippt hat
          Mein zweites Beispiel macht genau das, was du willst.

          Kommentar

          Lädt...
          X