Onkel Hans: Beistrich nach php Befehl?

Moin!

Wieso liefert mir

echo '<pre>', print_r($row), '</pre>';

ein Resultat und keine Fehlermeldung? Dachte, man MUSS einen Strichpunkt machen nach dem ersten echo und nach dem print_r?!

ANders gefragt: Seit wnn und wo kann man bei php einen normalen Beistrich nach einem Befehl setzen??

Onkel Hans

  1. Hi,

    Wieso liefert mir

    echo '<pre>', print_r($row), '</pre>';

    ein Resultat und keine Fehlermeldung?

    http://php.net/manual/en/function.echo.php

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hallo,

    Wieso liefert mir

    echo '<pre>', print_r($row), '</pre>';

    ein Resultat und keine Fehlermeldung?

    welche Fehlermeldung erwartest du? Du verlangst von PHP:

    "Gib mir den String '<pre>', dann das Ergebnis von print_r($row), und schließlich den String '</pre>' aus."

    Das ist syntaktisch völlig in Ordnung, nur dass du das Funktionsergebnis von print_r(), nämlich den boolschen Wert TRUE, eigentlich nicht brauchst und eher die "Nebenwirkung" der Funktion ausnutzt.

    Dachte, man MUSS einen Strichpunkt machen nach dem ersten echo und nach dem print_r?!

    Nein. Man muss einen Strichpunkt am Ende einer Anweisung machen. Hast du auch. Du hast im Beispiel nur eine Anweisung, die drei durch Komma getrennte Ausdrücke enthält.

    So long,
     Martin

    --
    Alle Tage sind gleich lang. Aber unterschiedlich breit.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Tach,

      Nein. Man muss einen Strichpunkt am Ende einer Anweisung machen. Hast du auch. Du hast im Beispiel nur eine Anweisung, die drei durch Komma getrennte Ausdrücke enthält.

      Was allerdings nur funktioniert, weil echo in PHP keine Funktion ist, sondern nur manchmal so tut als wäre es eine:

        
      echo "a";       # gibt a aus  
      echo ("a");     # gibt a aus  
      echo "a","b";   # gibt ab aus  
      echo ("a","b"); # ist ein Syntaxfehler  
      
      

      mfg
      Woodfighter

      1. Tach!

        Was allerdings nur funktioniert, weil echo in PHP keine Funktion ist, sondern nur manchmal so tut als wäre es eine:

        Es tut nicht einmal so. Es ist ganz klar definiert als Sprachkonstrukt, also etwas ganz eigenes.

        echo ("a");     # gibt a aus

        Du hast hier nur einen Ausdruck geklammert, so wie bei $a = (1 + 2) * 3;

        echo ("a","b"); # ist ein Syntaxfehler

        Ja, weil das kein gültiger Ausdruck ist. Da echo keine Funktion ist, kann man ihm nicht mit der Syntax für Funktionsparameter kommen. Works as designed. Gibts in anderen Sprachen in ähnlicher Form.

        dedlfix.

        1. Tach,

          Es tut nicht einmal so. Es ist ganz klar definiert als Sprachkonstrukt, also etwas ganz eigenes.

          ja stimmt natürlich, warum aber gerade echo und print in PHP Konstrukte und keine Funktionen sind, ist vermutlich auch nur aus historischen Gründen nachvollziehbar. Deswegen ist ihre Beschreibung auch in die Funktionsreferenz ausgelagert, unter Stringfunktionen ;-)

          echo ("a","b"); # ist ein Syntaxfehler

          Ja, weil das kein gültiger Ausdruck ist. Da echo keine Funktion ist, kann man ihm nicht mit der Syntax für Funktionsparameter kommen.

          Zumindest bis PHP einen Komma-Operator einführt, dann würde es vermutlich b ausgeben.

          Works as designed. Gibts in anderen Sprachen in ähnlicher Form.

          Ja, Konstrukte gibt es überall, die Wahl was Konstrukt ist und was nicht, ist aber bei PHP in diesem Fall etwas merkwürdig.

          mfg
          Woodfighter

          1. Tach!

            ja stimmt natürlich, warum aber gerade echo und print in PHP Konstrukte und keine Funktionen sind, ist vermutlich auch nur aus historischen Gründen nachvollziehbar. Deswegen ist ihre Beschreibung auch in die Funktionsreferenz ausgelagert, unter Stringfunktionen ;-)

            In die String-Funktionen gehören sie eigentlich auch nicht hin. Sie bearbeiten keine Strings, sondern geben Zeugs aus, nicht nur Strings.

            Den Begriff "Funktionsreferenz" darf man sicher nicht so eng sehen, denn da werden auch Klassen beschrieben, sowie Konstanten und andere Extensions-spezifische Dinge.

            Ja, Konstrukte gibt es überall, die Wahl was Konstrukt ist und was nicht, ist aber bei PHP in diesem Fall etwas merkwürdig.

            Für den Außenstehenden mag das zutreffen. Nicht immer findet man so einfach eine Erklärung wie bei isset(). Das sieht aus wie eine Funktion, aber wenn es auch so arbeiten würde, könnte es seine Funktion nicht erfüllen, weil die übergebenen Parameter vorher aufgelöst werden würden. Stattdessen muss der Variablenname bis zu isset() durchkommen, weil es ja in der Variablenverwaltung nach deren Existenz suchen muss. Die Alternative wäre wie bei defined(), da übergibt man nicht die Konstante sondern ihren Namen als String.

            dedlfix.

  3. moin,

    Wieso liefert mir

    echo '<pre>', print_r($row), '</pre>';

    ein Resultat und keine Fehlermeldung? Dachte, man MUSS einen Strichpunkt machen nach dem ersten echo und nach dem print_r?!

    Falsche Frage ;)

    echo nimmt eine Liste, insofern ist das Komma schon richtig. Sezte in print(), das zweite Argument:

    echo '<pre>', print_r($row,1), '</pre>';

    dann wird die Liste erwartungsgemäß mit echo ausgegeben.

    Hotti