Pregunta

He estado trabajando en PHP desde hace algún tiempo pero hoy cuando vi este vino como nuevo para mí:

if(preg_match('/foo.*bar/','foo is a bar')):
        echo 'success ';
        echo 'foo comes before bar';

endif;

Para mi sorpresa, sino que también se ejecuta sin errores. ¿Puede alguien me ilumine?

Gracias a todos:)

¿Fue útil?

Solución

Ese estilo de sintaxis se utiliza con mayor frecuencia al incrustar en HTML, especialmente para la lógica de la plantilla / pantalla. Cuando se incrusta esta manera, es un poco más fácil de leer que la sintaxis de llaves.

<div>
<? if ($condition): ?>
  <ul>
    <? foreach($foo as $bar): ?>
        <li><?= $bar ?></li>
    <? endforeach ?>
  </ul>
<? endif ?>
</div>

Versus:

<div>
<? if ($condition) { ?>
  <ul>
    <? foreach($foo as $bar) { ?>
      <li><?= $bar ?></li>
    <? } ?>
  </ul>
<? } ?>

La prolija tarea de fin que sea un poco más fácil hacer un seguimiento de los bloques de código anidados, aunque sigue siendo mayormente preferencia personal.

Otros consejos

Este es sintaxis alternativa de PHP para estructuras de control .

Su fragmento es equivalente a:

if(preg_match('/foo.*bar/','foo is a bar')) {
        echo 'success ';
        echo 'foo comes before bar';
}

En general:

if(cond):
...
...
endif;

es el mismo que

if(cond) {
...
...
}

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

Obras para if, for, while, foreach y switch. Puede ser muy útil para mezclar PHP y HTML.

Se puede leer sobre ella en Sintaxis alternativa para las estructuras de control en el manual de PHP. Nuevo formato, el código que ha escrito es similar al siguiente:

if (preg_match('/foo.*bar/','foo is a bar')):
    echo 'success ';
    echo 'foo comes before bar';
endif;

Este código es equivalente a:

if (preg_match('/foo.*bar/','foo is a bar')) {
    echo 'success ';
    echo 'foo comes before bar';
}

Esta sintaxis está disponible para varias otras estructuras de control también.

if ( condition ):
  // your if code
elseif ( other_condition ):
  // optional elseif code
else:
  // optional else code
endif;

while ( condition ):
  // your while code
endwhile;

for ( condition ):
  // your for code
endfor;

foreach ( condition ):
  // your foreach code
endforeach;

switch ( condition ):
  // your switch code
endswitch;

Es el equivalente a:

if(preg_match('/foo.*bar/','foo is a bar')):
 echo 'success ';
 echo 'foo comes before bar';
endif;

que es equivalente a:

if(preg_match('/foo.*bar/','foo is a bar')){
    echo 'success ';
    echo 'foo comes before bar';
}

La sabiduría de apoyo sintaxis condicional no estándar obviamente cuestionable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top