varias ternario simplificado operador estructuras else ejercicios condiciones condicionales php

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 :)

  1. 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.
  2. Use switch-case donde el número de evaluaciones es mayor. Personalmente prefiero cambiar de caso cuando los casos son más de 5.
  3. 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.
  4. 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