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

Quiero hacer algo como eso, en otras palabras el uso de la sentencia switch en PHP plantillas. Esto es posible con la instrucción if. El código anterior genera Parse error: syntax error, unexpected T_INLINE_HTML, expecting T_ENDSWITCH or T_CASE or T_DEFAULT en PHP 5.3. El PHP docs sugiere que esto debería ser posible.

Alguien puede confirmar que esto no funciona, o más bien, dime, ¿qué estoy haciendo mal?

Gracias.

  • Usted debe utilizar <?php en lugar de sólo <? – la versión corta se ha dejado de utilizar.
  • Donde se puede ver esto en la documentación? Fui al enlace que nos ha facilitado, pero no puedo encontrar nada sobre el apoyo a la mezcla de inline HTML con una instrucción switch.
  • <? (el formato corto de etiquetas) no se han quedado en desuso, que se acaba de evitar debido a la incompatibilidad con algunas configuraciones de servidor.
  • Como @Steve dice que ellos no están en desuso. Y mucho más agradable de usar. @AJ me estaba refiriendo a la sección interruptor de encendido():, pero no dicen nada acerca de la mezcla.
  • Que se lo diga a su IDE, su sys admin y novatos en ESO. Más de un idioma es claro, el que más se utiliza. El inglés es una buena ilustración : simple y eficiente, trajo a la lengua internacional en un minuto.
InformationsquelleAutor Znarkus | 2011-05-23

4 Comentarios

  1. 53

    He leído en el php doc que su ejemplo no deben trabajar.

    Cualquier salida (incluyendo espacios en blanco) entre un switch y el
    primer caso resultará en un error de sintaxis. Por ejemplo, esto no es válido

    Intente esto en su lugar:

    <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

  2. 16

    Tiene

    ?>\n\n<?

    después de que el switch que se convierte en

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

    Pensar en el script PHP con HTML en él, en lugar de adornado HTML. El binario de PHP se presenta en primer lugar el archivo.

    Que te gustaría usar algo como HEREDOC a echo a cabo sin escape HTML.

    • Ah, eso lo explica todo 🙂 gracias!
  3. 5

    Puedo usar este formato, probado y funcionando:

    <? switch($var) : case 1 : ?>
    
      <div>One</div>
    
    <? break; case 2 : ?>
    
      <div>Two</div>
    
    <? break; case 3 : ?>
    
      <div>Three</div>
    
    <? break; endswitch; ?>
  4. 0

    Tuve un problema similar, cuando el uso de un interruptor o una instrucción foreach con el nuevo estilo, el formato corto de etiquetas que se ejecuta en php 5.6.

    en mi caso: cambio de

    <?=
    
      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" >';
        }
    ?>

    a

     <?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" >';
            }
        ?>

    no dio lugar a error de sintaxis es decir, error de sintaxis, inesperado ‘switch’ (T_SWITCH)

Dejar respuesta

Please enter your comment!
Please enter your name here