2012-04-04 20 views
5

Aquí hay un programa php simple que da una salida extraña. ¿Alguien puede explicar por qué viene así y cómo obtener la producción esperada?aritmética simple en PHP

<?php 
$a=2;$b=3; 

echo "<br> ADD:".$a+$b; 
echo "<br> SUB:".$a-$b; 
echo "<br> MUL:".$a*$b; 
echo "<br> DIV:".$a/$b; 
?> 

Salida:

3-3 
MUL:6 
DIV:0.66666666666667 

Resultados esperados:

ADD:5 
SUB:-1 
MUL:6 
DIV:0.66666666666667 

Respuesta

12

Se debe a que el operador de concatenación de cadenas . tiene la same precedence como los operadores de añadir/sub, y todos ellos están a la izquierda -de asociación. Esto significa que la evaluación procede de izquierda a derecha, por lo que "<br> ADD:".$a se evalúa primero y el resultado se agrega a 3. Esta cadena en particular se convierte en cero y 0 + 3 = 3. Similar para la resta.

Solución: coloque la aritmética entre paréntesis.

echo "<br> ADD:".($a+$b); 
echo "<br> SUB:".($a-$b); 

Por otro lado, mul/div tienen mayor prioridad que la concatenación, por lo que producen el resultado esperado.

+0

Gran respuesta Jon! Gracias. – Stranger