while varias for estructuras endif else ejercicios condiciones condicionales php brackets conditional

varias - Condicional de PHP, se necesitan corchetes?



if php varias condiciones (6)

Las llaves (no corchetes) son opcionales en PHP, como en la mayoría de las sintaxis tipo C. Quizás estás pensando en Perl; se requieren allí, para esa forma de sintaxis.

Lo de dos puntos es una forma de estructura de control alternativa compatible con PHP. Lo odio, pero a algunas personas (en particular a los diseñadores de sistemas de plantillas, al parecer) les encanta.

Estaba navegando en un foro y alguien me preguntó por un archivo PHP que habían encontrado en la web. Tiene varios puntos como este en el código:

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

Siempre he pensado que se necesitan corchetes para adjuntar lo que quieres hacer si la condición es verdadera. ¿Hay alguna otra alternativa, como si está en la misma línea que no?

También hay otra línea como esta: if ($action != ""): mail("$adminaddress","Visitor Comment from YOUR SITE",

Mi instinto es decir que esto no funcionaría, pero tampoco sé si es un archivo PHP obsoleto y solía funcionar.


Para entrar en un poco más de detalle, la razón por la que las llaves son opcionales es que la sintaxis se ve así:

if(CONDITION) BLOCK [elseif(CONDITION) BLOCK] [else BLOCK]

BLOCK puede ser una sola declaración:

foo();

o puede ser un grupo de declaraciones encerrado en corsé:

{ foo(); bar(); }


Sí, excluir las llaves está permitido, aunque muchas veces he escuchado 2 razones para no usar esa sintaxis:

  1. Es más difícil de leer Menos obvio para otro programador.
  2. Si alguna vez quieres agregar algo dentro del if, entonces necesitas agregar los frenos, que es más difícil después de la primera codificación, ya que la mayoría de los editores agregarán el parche de cierre por ti.

Además, sí, la sintaxis de los dos puntos es válida. Las alternativas se pueden encontrar aquí: http://php.net/manual/en/control-structures.alternative-syntax.php


en mi opinión

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

es válido, pero es mucho más difícil de leer que:

if ($REMOTE_ADDR == "") { $ip = "no ip"; } else { $ip = getHostByAddr($REMOTE_ADDR); }


brackets are needed to enclose what you want to do if the condition is true

No puedo pensar en ningún idioma que requiera esto


puedes hacer otras declaraciones como esta:

<?php if ($something) { echo ''one conditional line of code''; echo ''another conditional line of code''; } if ($something) echo ''one conditional line of code''; if ($something) echo ''one conditional line of code''; echo ''a NON-conditional line of code''; // this line gets executed regardless of the value of $something ?>



y luego también puedes escribir if - else en una sintaxis alternativa:

<?php if ($something): echo ''one conditional line of code''; echo ''another conditional line of code''; elseif ($somethingElse): echo ''one conditional line of code''; echo ''another conditional line of code''; else: echo ''one conditional line of code''; echo ''another conditional line of code''; endif; ?>



con la sintaxis alternativa también puede caer fuera del modo de análisis de esta manera:

<?php if ($something): ?> one conditional line of code<br /> another conditional line of code <?php else: echo "it''s value was: $value<br />/n"; ?> another conditional line of code <?php endif; ?>

Pero esto se vuelve muy complicado muy rápido y no recomendaré su uso (excepto tal vez para la plantilla-lógica).



y para completarlo:

<?php $result = $something ? ''something was true'' : ''something was false''; echo $result; ?> equals <?php if ($something) { $result = ''something was true''; } else { $result = ''something was false''; } echo $result; ?>