php expresiones ternarios con la sintaxis anidada es correcta, pero los resultados son incorrectos, la siguiente es una solución positiva se ignora

  • Este es un caso que he hecho, aunque simple, pero el problema es engañosa:

Mira los resultados de los siguientes códigos

$dirNum=69;
$direction = $dirNum == 69 ? '东' : $dirNum == 87 ? '西' : '无';
echo $direction; //结果: 西

¿No es normal, entendida como el resultado de Oriente ?

Entonces ¿por qué los resultados del programa anterior es el Oeste, de hecho, la esencia del procedimiento anterior no está mal. Pero si se entiende el proceso de ejecución del programa va a entender.

Este código puede seguir el operador ternario se puede dividir en tres porciones $direction = $dirNum == 69 ? '东' : $dirNum == 87 ? '西' : '无';

  1. expresión condicional: $direction = $dirNum == 69
  2. Después de la fundación de los resultados: ? '东' : $dirNum == 87 ? '西'
  3. No se sostiene los resultados:: '无'

Ahora mira a los resultados de la expresión se establece hecho, y hay dos ?así que la pregunta es, que los resultados se hacen cumplir? Creo que sí veo que lo tienes. Este último es, sin duda ejecutados ? '西'. Yo entiendo que el programa no quiere decir que no hay ningún error lógico no es un error.

Así que hice la corrección sobre esta base, de modo que el segundo operador ternario no se establece como condición para la operación continua, a fin de evitar el problema solo.

$dirNum=69;
$direction = $dirNum == 69 ? '东' : ( $dirNum == 87 ? '西' : '无' );
echo $direction; //结果: 东
Publicados 156 artículos originales · ganado elogios 531 · vistas 110 000 +

Supongo que te gusta

Origin blog.csdn.net/qq_39043923/article/details/95595148
Recomendado
Clasificación