2010-04-23 28 views
21
($DAO->get_num_rows() == 1) ? echo("is") : echo("are"); 

Parece que esta dosis no funciona para mí según lo previsto, me aparece un error "Inesperado T_ECHO". Espero que haga eco de "es" o "es".Solución de problemas "Inesperado T_ECHO" en la declaración del operador ternario

Lo he intentado sin los corchetes alrededor del condicional. ¿No soy capaz de usar un operador ternario de esta manera?

$DAO->get_num_rows() devuelve un valor entero.

+2

tener en cuenta para utilizar las plantillas, no se emiten directamente del negocio logig –

Respuesta

46

El operador Ternary no es idéntico a un if-then. Que debería haber escrito

echo ($DAO->get_num_rows() == 1) ? "is" : "are"; 

Se devuelve el valor en la segunda o tercera posición. NO ejecuta la declaración en la 2da o 3ra posición.

+1

Si devuelve el valor, por eso si reemplaza '' echo' por print' funciona? – Mageek

+0

@Mageek - "funciona"? O no muere? El hecho de que imprima algo no significa que haga lo que OP quería. Mi recomendación debería ser lo que se pretendía. – MJB

+1

Quería entender por qué '($ DAO-> get_num_rows() == 1)? print ("es"): print ("son"); 'funciona, pero' ($ DAO-> get_num_rows() == 1)? echo ("es"): echo ("son"); 'no. – Mageek

0

U puede utilizar

eco ($ DAO-> get_num_rows() == 1)? "es": "son";

6

El operador ternario debe dar como resultado un valor, y no repetirlo.


En este caso, es probable que desee esto:

echo ($DAO->get_num_rows() == 1) ? "is" : "are"; 


Si desea utilizar dos echo, que tendrá que trabajar con un bloque de if/else:

if ($DAO->get_num_rows() == 1) { 
    echo "is"; 
} else { 
    echo "are" 
} 

Lo cual hará lo mismo que la primera parte del código que usa el operador ternario, excepto que es un poco más largo.

2

El operador ternario devuelve uno o dos valores después de evaluar las condiciones. No debe usarse de la manera en que lo está usando.

Esto debería funcionar:

echo ($DAO->get_num_rows() == 1 ? "is" : "are"); 
Cuestiones relacionadas