2012-03-01 19 views
6

Necesito agregar datos anexados a una cadena si cierta variable es verdadera, de lo contrario, no necesito agregar nada. Actualmente estoy haciendo:¿Debe incluir un valor falso en un operador ternario PHP?

$string = (condition()) ? 'something'.$string.'something' : $string; 

¿Hay una forma de omitir la adición de la opción falsa en un operador ternario? Parece innecesario decir $ string = $ string si la condición es falsa.

Respuesta

3

No puede omitirlo. Se podría volver a escribir como una línea if condición de que:

if (condition()) $string = 'something'.$string.'something'; 
+0

Esta fue mi siguiente opción que se esperaba que podría hacerse. Gracias por la confirmación. – Ayub

0

No, no hay forma de omitirlo. Si desea omitir el bit falsa, volver al método if:

if (condition()) $string = 'something' . $string . 'something'; 

El método ternario es sólo un corto comunicado if mano de todos modos. Si puede hacer que la declaración if sea igual de corta sin sacrificar la legibilidad (como en el ejemplo anterior), debería considerarla.

Pero, para ser honesta, Yo incluso formato que para que sea más legible:

if (condition()) 
    $string = 'something' . $string . 'something'; 

A menos que estés desesperado por debajo de la altura del monitor, que será más fácil de entender de un vistazo :-)

1

Sí, es necesario. Piense en el operador ternario como una función. Lo que se puede esperar que el comportamiento sea si se hizo algo como esto, pero no quería hacer una asignación si condition() evaluaron a false:

$string = ternary(condition(), $yesValue, $noValue); 

No hay manera de que se puede abortar la misión en la variable $string si condition() se evalúa como falso.

-1

No. Ese es el punto de un ternario. Si no quiere un valor falso, ¿por qué no simplemente make condition() devuelve el valor que necesita?

Algo así como:

$string = condition($string); 

function condition($string){ 
    if($string == 'whatever') 
    { 
     $string = 'something'.$string.'something'; 
    } 

    return $string; 
} 

puedo ver todos los demás ya se me adelantó, por lo que aquí está la documentación para ternaria:

http://php.net/manual/en/language.operators.comparison.php

+0

porque quizás solo quiera mostrar si es verdadero y nada si es falso. –

+0

@hanoncs - ¿Qué demonios sugieres entonces? Si él no quiere definir el manejo falso, entonces no use un plan simple y ternario. No hay "poder" en su pregunta. Está claro que solo quiere anexarse ​​de verdad, pero cree que la autoredagación es un desperdicio de lo falso. Entonces, si eso es una preocupación, está ejecutando una función para verificar de todos modos, ¿por qué no solo decir $ string = condition() y hacer que esa función dé los resultados finales de la cadena? –

Cuestiones relacionadas