Allgmeine Frage zu while Schleife - Bedingung

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

  • Allgmeine Frage zu while Schleife - Bedingung

    Bei der while Schleife muss ja eigentlich eine Bedinung angegeben werden.
    Doch gibt es auch Beispiele wie das Folgende:
    PHP-Code:
    while ( $inhalt fgets ($handle ))
    {
      echo 
    "<li> $inhalt </li>";

    Dort wird "=" verwendet, also kein Vergleichoperator, sondern eine Zuweisung.
    Wenn fgets am Ende ist, wird glaube ich FALSE zurückgegben, doch vorher immer der Inhalt der Zeile, also stände dort in aufgelöster Form:

    PHP-Code:
    while ( Zeileninhalt )
    {
      echo 
    "<li> $inhalt </li>";

    Warum funktioniert das dann ?

  • #2
    Hallo,

    in PHP haben Zuweisungen sozusagen ein Ergebnis.

    PHP-Code:
    $a 1
    speichert die 1 in $a, gibt sie aber auch zurück, so dass man sie auch noch in einer weiteren Variablen speichern kann:

    PHP-Code:
    $b $a 1
    In Bedingungen kann man sich das zunutze machen, indem man den Wert zuweist. Dabei wird der Wert selbst zurückgegeben und kann daher auch zum Überprüfen der Bedingung weiterverwendet werden.

    PHP-Code:
    if ($foo doSomething()) {
    // ...

    ist also von der Bedingung her gesehen dasselbe wie
    PHP-Code:
    if (doSomething()) {
    // ...

    nur mit dem Unterschied, dass das Ergebnis des Aufrufs zusätzlich noch in $foo zwischengespeichert wird, was oft nützlich sein kann.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Schon, aber doSomething ist doch keine Bedingung, ich dachte da müsste immer true oder false rauskommen?

      Kommentar


      • #4
        Stell dir halt einfach vor, dass doSomething eine Funktion ist, die true oder false zurückliefert.

        Dass es immer true oder false sein muss, ist übrigens nicht richtig. Die Bedingung wird immer dann nicht erfüllt, wenn der Wert null, false, 0, "", "0" oder ein leeres Array ist. In allen anderen Fällen wird sie erfüllt.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Die Bedingung wird immer dann nicht erfüllt, wenn der Wert null, false, 0, "", "0" oder ein leeres Array ist. In allen anderen Fällen wird sie erfüllt.
          Danke, das hat mir jetzt geholfen, endlich wieder was verstanden!

          Kommentar

          Lädt...
          X