Warum klappt das nicht?

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

  • Warum klappt das nicht?

    Hallo,

    ich habe in einer PHP Datei folgenden Code eingebaut:

    <?
    $array = file("text.php");
    shuffle($array);
    for ($i=1; $i<35; $i++) {
    echo $array[$i];
    }
    ?>

    Ich möchte mit Hilfe dieses Codes erreichen, dass Zufallswörter aus einer Textdatei ausgelesen werden, doch das klappt leider nicht. Es erscheint kein einziges Wort.

    Ich kann den Fehler nicht finden.. Kann mir evtl jemand sagen was ich falsch gemacht habe?

  • #2
    verwende bitte die php-tags!

    welche php-version hast du? >= 4.2? -> ok
    < 4.2 -> wo ist der random-init?

    dann solltest mal im manual unter www.php.net/shuffle schauen, was da so an userinfos steht.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      hi abraxas,

      ja ich habe die 4.2 version.
      vielleicht liegt es an der externen text datei... ? ich habe jetzt mal in dem text nach jedem wort einen zeilenumbruch eingefügt. jetzt erscheinen die zufallswörter. allerdings tauchen immer genau 35 zufallswörter auf, eigentlich sollten aber immer zwischen 1 und 35 auftauchen. weiss wer wo das problem liegt?

      Kommentar


      • #4
        Original geschrieben von darkeye
        hi abraxas,
        bitte mit X am ende!

        Original geschrieben von darkeye
        ja ich habe die 4.2 version.
        fein.

        Original geschrieben von darkeye
        vielleicht liegt es an der externen text datei... ?
        nö.

        Original geschrieben von darkeye
        ich habe jetzt mal in dem text nach jedem wort einen zeilenumbruch eingefügt. jetzt erscheinen die zufallswörter.
        was hattest du den vorher drin? schaue dir mal an, was file() macht. dann weisst du auch, warum du einen zeilenumbruch brauchst.

        Original geschrieben von darkeye
        allerdings tauchen immer genau 35 zufallswörter auf, eigentlich sollten aber immer zwischen 1 und 35 auftauchen.
        verstehe.

        Original geschrieben von darkeye
        weiss wer wo das problem liegt?
        ja. beschreibe doch mal, was dein gepostetes script macht. dann findest du ganz schnell den fehler.

        ach ja... und die php-tags darfst du immer noch in deinen 1. post reinschreiben.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          ok ok... gebe ja zu dass ich in sachen php nicht der fitteste bin

          wie muss ich den code denn umbauen wenn immer zwischen 1 und 35 zufallswörter erscheinen sollen? bist du so nett und sagst mir das?
          für deine mühe würde ich hier einen link zu einem megalustigen video reinposten, du lachst dich dann bestimmt weg, so lustig ist das

          Kommentar


          • #6
            Original geschrieben von darkeye
            ok ok... gebe ja zu dass ich in sachen php nicht der fitteste bin
            das macht ja nix. aber vorsagen tue ich nicht (alles).

            Original geschrieben von darkeye
            wie muss ich den code denn umbauen wenn immer zwischen 1 und 35 zufallswörter erscheinen sollen? bist du so nett und sagst mir das?
            im moment gibst du einen festen start- und endwert an.

            schaue dir mal die beiden funktionen rand() und count() an.

            Original geschrieben von darkeye
            für deine mühe würde ich hier einen link zu einem megalustigen video reinposten, du lachst dich dann bestimmt weg, so lustig ist das
            links dieser art gehören nicht ins php-forum. nutze dafür bitte OOO.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              ne so wird das leider nix... ich komme da nicht drauf. von php habe ich wirklich nicht die geringste ahnung... kannst du mir nicht einfach sagen wie der genaue code aussehen muss? dann kann ich endlich weiterarbeiten... dafür gibts dann auch drei lustige videolinks

              Kommentar


              • #8
                dafür gibts dann auch drei lustige videolinks
                wenn du das weglassen würdest, verrat ichs dir ...

                - lies alle wörter in eine array (file, ...
                - bestimme die anzahl der elemente (count/sizeof, ...
                - bestimme ein zufallswert zwischen 1 und 'anzahl der elemente' (rand, ...
                - shuffle das array
                - gib die ersten 'zufallsswert' werte des arrays aus

                so?
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  weiter komm ich nicht:

                  PHP-Code:
                  <? 
                  $array = file("text.php"); 
                  shuffle($array); 
                  for ($i=0; $i<$rand = rand(0,100); 
                  print $rand; $i++) {
                  echo $array[$i];
                  }
                  ?>

                  das klappt leider immer noch nicht... wer weiss die antwort?

                  Kommentar


                  • #10
                    Natürlich kann man einen riesen aufwand mit rand und count und was weiß ich was machen.
                    Einfacher geht es jedoch mit der Funktion array_rand. Die liefert nämlich einen (oder wenn gewünscht auch mehrere) zufällige Elemente eines Arrays zurück. Dann brauchst du nicht mal mehr ne Schleife - nur noch file und array_rand (und vllt. echo oder print).
                    hopka.net!

                    Kommentar


                    • #11
                      Original geschrieben von Hopka
                      Natürlich kann man einen riesen aufwand mit rand und count und was weiß ich was machen.
                      Einfacher geht es jedoch mit der Funktion array_rand. Die liefert nämlich einen (oder wenn gewünscht auch mehrere) zufällige Elemente eines Arrays zurück. Dann brauchst du nicht mal mehr ne Schleife - nur noch file und array_rand (und vllt. echo oder print).
                      nein, höchsten in hinsicht auf die schleife, denn wenn du ne zufällige anzahl zufälliger wörter willst, mußt du array_rand() trotzdem rand(,sizeof()) übergeben. das einzige, das du sparst, ist die schleife.
                      Die Zeit hat ihre Kinder längst gefressen

                      Kommentar


                      • #12
                        das klappt leider immer noch nicht... wer weiss die antwort?
                        ich hab dir schritt für schritt gepostet, wie du vorgehen sollst ...
                        Die Zeit hat ihre Kinder längst gefressen

                        Kommentar


                        • #13
                          nur als info an die, die denken, dass er nur einen wert haben will ...
                          Original geschrieben von darkeye
                          eigentlich sollten aber immer [color=red]zwischen 1 und 35 auftauchen[/color].
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            @ abraxax & derhund

                            letzter versuch: sagt mir endlich wie der code aussehen muss. ich raste hier gleich aus

                            Kommentar


                            • #15
                              eigentlicht sollte man so eine dreisten und nervenden FORDERUNG, wie du es darbietest, gar nicht erst nachkommen.

                              aber angesichts der tatsache, dass das alles nur grundlagen sind, gebe ich dir den code, auf dass du dir einen anderen ton und mehr lernfähigkeit aneignest.

                              * 1. verwarnung *

                              PHP-Code:
                              <?php

                                  $c 
                              count(shuffle($array file("text.php")));
                                  if (
                              $c>0)
                                  {
                                      
                              $im rand(0,$c-1);
                                      for (
                              $i=0$i<$im; ++$i)
                                          echo 
                              $array[$i];
                                  }
                                  else
                                      echo 
                              'kein dateiinhalt';

                              ?>
                              (ungetestet)
                              Zuletzt geändert von Abraxax; 23.05.2004, 18:07.
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X