Si no, incrustación dentro de html

¿Cuál es la forma correcta de incrustar if else y elseif conditions dentro de html?

Solutions Collecting From Web of "Si no, incrustación dentro de html"

Vea esto y su alternativa , que tiende a ser más legible si está incrustado dentro de bloques html.

Recomiendo la siguiente syntax para la legibilidad.

< ? if ($condition): ?> 

Content

< ? elseif ($other_condition): ?>

Other Content

< ? else: ?>

Default Content

< ? endif; ?>

Tenga en cuenta que omitir php en las tags abiertas requiere que short_open_tags esté habilitado en su configuración, que es la predeterminada . La syntax condicional de llaves sin llave relevantes siempre está habilitada y se puede usar independientemente de esta directiva.

 < ?php if ($foo) { ?> 
Condition is true
< ?php } else { ?>
Condition is false
< ?php } ?>

EDITAR: Estoy buscando hacer una nota sobre la respuesta de @ Patrick, pero aparentemente StackOverflow piensa que mi reputación no es lo suficientemente buena. Siento que esta es una nota importante, ya que las personas que están aterrizando aquí lo están haciendo para aprender. Si esto se elimina porque no responde la pregunta, que así sea. Si Patrick puede corregir su respuesta, entonces eliminar esto no hace daño.

Veo que esta es una vieja pregunta / respuesta, pero ocupa un lugar destacado en la búsqueda de Bing, por lo que me veo obligado a agregar este comentario para aquellas almas confundidas con PHP que aterricen aquí.

En la respuesta de @Patrick McMahon, el segundo comentario aquí ( $ first_condition es falso y $ second_condition es verdadero) no es del todo exacto:

 < ?php if($first_condition): ?> /*$first_condition is true*/ < ?php elseif ($second_condition): ?> /*$first_condition is false and $second_condition is true*/ < ?php else: ?> /*$first_condition and $second_condition are false*/ < ?php endif; ?> 

Elseif activa si $ first_condition es verdadero o falso, al igual que las sentencias else else , si hay múltiples.

No soy un experto en PHP, así que no sé si esa es la forma correcta de decir si O este O ese otro o si hay otra / mejor forma de codificarlo en PHP, pero esto sería una distinción importante para aquellos que buscan O condiciones versus condiciones ELSE.

La fuente es w3schools.com y mi propia experiencia.

Encontrarás múltiples métodos diferentes que las personas usan y cada uno tiene su propio lugar.

 < ?php if($first_condition): ?> /*$first_condition is true*/ < ?php elseif ($second_condition): ?> /*$first_condition is false and $second_condition is true*/ < ?php else: ?> /*$first_condition and $second_condition are false*/ < ?php endif; ?> 

Si en su php.ini atributo short_open_tag = true (esto se encuentra normalmente en la line 141 del archivo predeterminado php.ini) puede reemplazar su etiqueta php open de < ?php a < ? . Esto no se recomienda ya que la mayoría de los entornos de servidores en vivo lo tienen apagado (incluidos muchos CMS como Drupal, WordPress y Joomla). Ya probé tags abreviadas de mano corta en Drupal y confirmó que romperán su sitio, así que quédese con < ?php . short_open_tag no está short_open_tag por defecto en todas las configuraciones de servidor y no se debe asumir como tal cuando se desarrolla para configuraciones de servidor desconocidas. Muchas compañías de hosting tienen short_open_tag desactivada.

Una búsqueda rápida de short_open_tag en stackExchange muestra 830 resultados. https://stackoverflow.com/search?q=short_open_tag Esa es una gran cantidad de personas que tienen problemas con algo con lo que simplemente no deberían jugar.

con algunos entornos y aplicaciones de servidor, las tags abreviadas de php de mano corta todavía pueden bloquear el código incluso con short_open_tag establecido en true .

short_open_tag se eliminará en PHP6, por lo tanto, no use tags de mano cortas.

todas las futuras versiones de PHP caerán short_open_tag

"Se ha recomendado durante varios años que no utilice la etiqueta abreviada" short-cut "y, en su lugar, utilice la combinación de tags completa. Con el amplio uso de XML y el uso de estas tags por otros idiomas, el servidor puede confundirse fácilmente y termine analizando el código incorrecto en el contexto incorrecto, pero debido a que este atajo ha sido una característica durante tanto tiempo, actualmente todavía es compatible con la compatibilidad con versiones anteriores, pero le recomendamos que no las use ". - Jelmer Sep 25 '12 a las 9:00 php: "short_open_tag = On" no funciona

y

Normalmente escribes PHP así: Sin embargo, si la directiva allow_short_tags está habilitada, puede usar:. También las tags de clasificación proporcionan una syntax adicional: que es igual a.

Las tags cortas pueden parecer interesantes pero no lo son. Solo causan más problemas. Oh ... y IIRC serán eliminados de PHP6. Crozin respondió 24 de agosto de 2010 a las 22:12 php short_open_tag problem

y

Para responder a la pregunta de por qué, citaría la guía de certificación Zend PHP 5: "Las tags cortas fueron, por un tiempo, el estándar en el mundo PHP, sin embargo, tienen el mayor inconveniente de estar en conflicto con los encabezados XML y, por lo tanto, tienen algo caído en el camino ". - Fluffy 13 de abril de11 a 14:40 ¿Son aceptables las tags cortas de PHP?

También puede ver personas usar el siguiente ejemplo:

 < ?php if($first_condition){ ?> /*$first_condition is true*/ < ?php }else if ($second_condition){ ?> /*$first_condition is false and $second_condition is true*/ < ?php }else{ ?> /*$first_condition and $second_condition are false*/ < ?php } ?> 

Esto funcionará, pero está muy mal visto ya que no se considera legible y no es para lo que usarías este formato. Si tuviera un archivo PHP donde tenía un bloque de código PHP que no tenía tags incrustadas dentro, entonces usaría el formato de paréntesis.

El siguiente ejemplo muestra cuándo usar el método de corchetes

 < ?php if($first_condition){ /*$first_condition is true*/ }else if ($second_condition){ /*$first_condition is false and $second_condition is true*/ }else{ /*$first_condition and $second_condition are false*/ } ?> 

Si está haciendo este código usted mismo, puede hacer lo que quiera, pero si trabaja con un equipo en un trabajo, se recomienda utilizar el formato correcto para las circunstancias correctas. Si usa corchetes en scripts html / php incrustados, esa es una buena manera de ser despedido, ya que nadie querrá limpiar su código después de usted. Los jefes de TI se preocuparán por la legibilidad de los códigos y los profesores universitarios calificarán la legibilidad.

ACTUALIZAR

en base a los comentarios de duskwuff, aún no está claro si se desaconseja la taquigrafía (según los estándares php) o no. Actualizaré esta respuesta a medida que obtenga más información. Pero según muchos documentos encontrados en la web, la taquigrafía es mala para la portabilidad. Aún así, personalmente no lo usaría, ya que no da ninguna ventaja y debes confiar en que haya una configuración activada para cada host web.

  < ?php if (date("H") < "12" && date("H")>"6") { ?> src="< ?php bloginfo('template_url'); ?>/images/img/morning.gif" < ?php } elseif (date("H") > "12" && date("H")< "17") { ?> src="< ?php bloginfo('template_url'); ?>/images/img/noon.gif" < ?php } elseif (date("H") > "17" && date("H")< "21") { ?> src="< ?php bloginfo('template_url'); ?>/images/img/evening.gif" < ?php } elseif (date("H") > "21" && date("H")< "24") { ?> src="< ?php bloginfo('template_url'); ?>/images/img/night.gif" < ?php }else { ?> src="< ?php bloginfo('template_url'); ?>/images/img/mid_night.gif" < ?php } ?>