Switch-Anweisung in PHP-injiziertem HTML

Lesezeit: 1 Minute
<? switch ($var): ?>
  <? case 1: ?>
    It's 1!
  <? break ?>
<? endswitch ?>

Ich möchte so etwas tun, also die switch-Anweisung in PHP-Templates verwenden. Dies ist mit der if-Anweisung möglich. Der obige Code generiert Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT in PHP 5.3. Das PHP-Dokumente schlägt vor, dass dies möglich sein sollte.

Kann mir jemand bestätigen, dass dies nicht funktioniert, oder besser gesagt, mir sagen, was ich falsch mache?

Vielen Dank.

  • Du solltest benutzen <?php statt nur <? – Die Kurzversion ist veraltet.

    – Spudley

    23. Mai 2011 um 11:32 Uhr

  • Wo siehst du das in der Dokumentation? Ich bin zu dem von Ihnen angegebenen Link gegangen, aber ich kann nichts über die Unterstützung des Mischens von Inline-HTML mit einer switch-Anweisung finden.

    – AJ.

    23. Mai 2011 um 11:33 Uhr

  • – Steve

    23. Mai 2011 um 11:54 Uhr

  • Wie @Steve sagt, sind sie nicht veraltet. Und viel schöner zu bedienen. @AJ Ich bezog mich auf den Abschnitt über switch():, aber nein, es sagt nichts über das Mischen aus.

    – Znarkus

    23. Mai 2011 um 12:00 Uhr

  • Sagen Sie das Ihrer IDE, Ihrem Systemadministrator und Neulingen auf SO. Je klarer eine Sprache ist, desto häufiger wird sie verwendet. Englisch ist ein schönes Beispiel: einfach und effizient, in einer Minute in die internationale Sprache gebracht.

    – Yonn Trimoreau

    27. April 2016 um 8:00 Uhr

Benutzer-Avatar
j_freyre

Ich habe im PHP-Dokument gelesen, dass Ihr Beispiel nicht funktionieren sollte.

Jede Ausgabe (einschließlich Leerzeichen) zwischen einer switch-Anweisung und dem ersten Fall führt zu einem Syntaxfehler. Dies ist beispielsweise ungültig

Versuchen Sie stattdessen Folgendes:

<div>
<?php switch($variable): 
case 1: ?>
    <div>
    Newspage
    </div>
<?php break; ?>
<?php case 2: ?>
    </div>
    Forum
    <div>
<?php break; ?>
<?php endswitch; ?>
</div>

http://php.net/control-structures.alternative-syntax

  • Vielen Dank! (Für alle anderen ist der Code von dieser Kommentar)

    – Znarkus

    23. Mai 2011 um 12:06 Uhr


Du hast

?>\n\n<?

nach deinem schalter was wird

switch($var):
echo "\n\t";
case 1:

Stellen Sie sich Ihr Skript als PHP mit HTML vor und nicht als ausgeschmücktes HTML. Die PHP-Binärdatei ruft die Datei zuerst ab.

Vielleicht möchten Sie so etwas wie HEREDOC verwenden, um HTML ohne Escapezeichen auszugeben.

Benutzer-Avatar
Davide

Ich verwende diese “freundliche Formatierung”. Getestet und funktioniert:

<? switch($var) : case 1 : ?>

  <p>One</p>

<? break; case 2 : ?>

  <p>Two</p>

<? break; case 3 : ?>

  <p>Three</p>

<? break; default : ?>

  <p>Default Value</p>

<? endswitch; ?>

  • Ihre Lösung hat für meine Frage perfekt funktioniert – stackoverflow.com/questions/64427621/…

    – BigOnkelE

    20. Oktober 2020 um 12:44 Uhr

Ich hatte ein ähnliches Problem bei der Verwendung eines Switches oder einer foreach-Anweisung mit den Short-Tags im neuen Stil, die auf PHP 5.6 ausgeführt wurden.

in meinem Fall: ändern

<?=

  switch ($number_of_columns) {
    case "1":
        echo '<div class="col-sm-12 col-md-12" >';
        break;
    case "2":
        echo '<div class="col-sm-12 col-md-6" >';
        break;
    case "4":
        echo '<div class="col-sm-6 col-md-3" >';
        break;
    default:
        echo '<div class="col-sm-6 col-md-4" >';
    }
?>

zu

 <?php 
      switch ($number_of_columns) {
        case "1":
            echo '<div class="col-sm-12 col-md-12" >';
            break;
        case "2":
            echo '<div class="col-sm-12 col-md-6" >';
            break;
        case "4":
            echo '<div class="col-sm-6 col-md-3" >';
            break;
        default:
            echo '<div class="col-sm-6 col-md-4" >';
        }
    ?>

führte zu keinem Syntaxfehler, dh Syntaxfehler, unerwarteter ‘Schalter’ (T_SWITCH)

1136780cookie-checkSwitch-Anweisung in PHP-injiziertem HTML

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy