2010-09-07 7 views
120

¿Son elseif y else if completamente, o hay alguna diferencia?¿Son "elseif" y "else if" completamente?

¿Tiene Zend un "estándar" aceptado sobre cuál usar?

Aunque personalmente no me gusta ver elseif en el código, solo necesito saber si son sinónimos y el manual de PHP no es el más fácil de buscar.

+10

No todos los demás lenguajes usan 'else if', por cierto. Por ejemplo, VB también usa 'ElseIf' y Ruby usa' elsif'. –

+6

y shell/bash usa elif – knittl

+7

python también usa elif – gregghz

Respuesta

156

Desde el PHP manual:

En PHP, también se puede escribir 'else if' (en dos palabras) y el comportamiento sería idéntico al de 'elseif' (una sola palabra). El significado sintáctico es ligeramente diferente (si estás familiarizado con C, este es el mismo comportamiento), pero la conclusión es que ambos darían exactamente el mismo comportamiento.

Esencialmente, ellos se comportan de la misma, pero else if es técnicamente equivalente a una estructura anidada, así:

if (first_condition) 
{ 

} 
else 
{ 
    if (second_condition) 
    { 

    } 
} 

El manual también señala:

Tenga en cuenta que elseif y else if solo se considerará exactamente lo mismo cuando se usen corchetes como en el ejemplo anterior. Cuando use dos puntos para definir sus condiciones if/elseif, no debe separar else en dos palabras, o PHP fallará con un error de análisis.

que significa que en la forma estructura de control normal (es decir, utilizando aparatos de ortodoncia.):

if (first_condition) 
{ 

} 
elseif (second_condition) 
{ 

} 

ya sea elseif o else if se puede utilizar. Sin embargo, si se utiliza el alternate syntax, debe utilizar elseif:

if (first_condition): 
    // ... 
elseif (second_condition): 
    // ... 
endif; 
+8

Buen trabajo con los fragmentos de ejemplo. En todo caso, la sintaxis alternativa es todo lo que se necesita para probar que PHP simplemente trata 'else if' como' else {if {'. – BoltClock

+0

+1 para "else if es técnicamente equivalente a una estructura anidada" –

+1

PHP no trata 'else if' como' else {if {'; de lo contrario, no podría hacer' if (0) {} else if (0) {} else {} '... –

36

El Grupo de Interoperabilidad de Marco (figura) que se compone de miembros que incluyen los desarrolladores de Zend (https://github.com/php-fig/fig-standards#voting-members), proponen una serie de recomendaciones sobre normas (PSR- #).

Zend2 y Symfony2 ya siguen a PSR-0.

No existen reglas estrictas para los estilos, pero puede intentar seguir la mayor cantidad posible de PSR-2.

Hay un comentario en otro sitio si vs elseif en PSR-2:

La palabra clave elseif se debe utilizar en lugar de otra persona si para que todos los palabras clave de control se ven como palabras sueltas.

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md#51-if-elseif-else

Algunas de las recomendaciones son sólo eso, las recomendaciones. Depende de usted si desea usar else if o elseif

+4

Muchas gracias por señalar la guía de palabras clave como una palabra. –