ternario - if simplificado php
PHP Elseif Operadores Ternarios (3)
Estoy intentando convertir el siguiente código en un Operador Ternario, pero no funciona y no estoy seguro de por qué. Creo que mi problema es que no sé cómo expresar la operación elseif
en formato ternario. A mi entender y elseif
se realiza de la misma manera que una operación if
utilizando el formato : (condition) ? ''result''
: (condition) ? ''result''
.
if ($i == 0) {
$top = ''<div class="active item">'';
} elseif ($i % 5 == 0) {
$top = ''<div class="item">'';
} else {
$top = '''';
}
$top = ($i == 0) ? ''<div class="active item">'' : ($i % 5 == 0) ? ''<div class="item">'' : '''';
Demasiado tarde probablemente para compartir algunos puntos de vista, pero sin embargo :)
- Utilice if - else if - else para un número limitado de evaluaciones. Personalmente, prefiero usar if - else if - else cuando el número de comparaciones es menor que 5.
- Use switch-case donde el número de evaluaciones es mayor. Personalmente prefiero cambiar de caso cuando los casos son más de 5.
- Use ternario cuando se esté considerando una sola comparación (o una comparación única cuando se realice un bucle), o cuando se necesite una comparación if-else dentro de la cláusula de "caso" de una estructura de conmutación.
- El uso de ternario es más rápido cuando se compara mientras se realiza un bucle en un conjunto de datos muy grande.
IMHO Es finalmente el desarrollador que decide la ecuación de compensación entre la legibilidad del código y el rendimiento, y eso a su vez decide qué fuera de, ternario frente a si no, si no si no en caso de cambio, se puede usar en cualquier situación particular.
El operador ternario no admite una operación true if... else if... else...
; sin embargo, puedes simular el comportamiento usando la siguiente técnica
var name = (variable === 1) ? ''foo'' : ((variable === 2) ? ''bar'' : ''baz'');
Personalmente no me importa esto, ya que no lo encuentro más legible o elegante. Normalmente prefiero la instrucción switch
.
switch (variable) {
case 1 : name = ''foo''; break;
case 2 : name = ''bar''; break;
default : name = ''bas''; break;
}
$top = ($i == 0) ? ''<div class="active item">'' : (($i % 5 == 0) ? ''<div class="item">'' : '''');
necesitas agregar paréntesis alrededor del bloque entero