frankx: stringzeile in php - warum geht das?

Hellihello,

warum funktioniert:

  
<?php  
echo "hallo";  
asdf  
?>  

Erst eine zweite Stringzeile

  
<?php  
echo "hallo";  
asdf  
asdf  
?>  

bringt den Fehler, den ich bereits beim ersten Beispiel erwartet hätte.

frankx

  1. Tach.

    <?php
    echo "hallo";
    asdf
    ?>

      
    Mit error\_reporting auf E\_ALL erkennst du:  
      
    hallo  
    Notice: Use of undefined constant asdf - assumed 'asdf' in c:\Apache\htdocs\index.php on line 4  
    
    -- 
    Once is a mistake, twice is jazz.
    
  2. echo $begrüßung;

    warum funktioniert:

    <?php

    echo "hallo";
    asdf
    ?>

    
    >   
    > Erst eine zweite Stringzeile  
    >   
    > ~~~php
    
    <?php  
    
    > echo "hallo";  
    > asdf  
    > asdf  
    > ?>
    
    

    bringt den Fehler, den ich bereits beim ersten Beispiel erwartet hätte.

    Dein asdf wird als Konstante interpretiert. Da du diese Konstante nirgends definiert hast, ist PHP so frei, stattdessen anzunehmen, du hättest einen String verwenden wollen. Das teilt es dir mittels einer (durch die Default-Einstellung des Error-Reportings allerdings unterdrückten) Notice-Meldung mit. Siehe Antwort von Blaubart. Ein String alleine ist ein durchaus gültiger Ausdruck, er hat nur keine weiteren Auswirkungen. Zwei Ausdrücke hintereinander, ohne Operator oder Befehlsende (;) dazwischen, ist ungültige PHP-Syntax. Vor dem schließenden ?> ist die Notation eines Befehlsende-Semikolons nicht nötig, was auch noch ein Grund ist, warum dein erstes Beispiel keinen Fehler gebracht hat.

    echo "$verabschiedung $name";