Decir que tengo una cadena, $char. $char == "*".
PHP utilización cadena como operador
También tengo dos variables, $ a y $ b, que equivalen a "4" y "5", respectivamente.
¿Cómo consigo el resultado de $a $char $b, ie 4 * 5 ?
Gracias :)
Decir que tengo una cadena, $char. $char == "*".
PHP utilización cadena como operador
También tengo dos variables, $ a y $ b, que equivalen a "4" y "5", respectivamente.
¿Cómo consigo el resultado de $a $char $b, ie 4 * 5 ?
Gracias :)
Puede utilizar eval()
según lo sugerido por @konforce, sin embargo, la ruta más segura sería algo así como:
$left = (int)$a;
$right = (int)$b;
$result = 0;
switch($char){
case "*":
$result = $left * $right;
break;
case "+";
$result = $left + $right;
break;
// etc
}
El método más sencillo pero más peligroso es utilizar eval
.
$c = eval("return $a $char $b;");
pero evite eval. –
@Shakti, evitaría 'eval' para el código de producción también. – Matthew
Prefiero no usar eval como los valores provienen de la entrada del usuario. – felamaslen
echar un vistazo a la función eval(). necesitarás construir un comando php apropiado y ejecutar dentro de eval() para extraer el resultado.
que puede hacer con eval
sin embargo, no se recomienda usar eval
.
Si hay operador caso puede por cualquier cosa que debe comprobar qué operador es antes de usar
switch($char)
{
case '*':
$result= $a * $b;
break;
case '+':
$result= $a + $b;
break;
}
Sí, voy a ir con esa opción. Gracias :) – felamaslen
método más seguro es una construcción switch:
function my_operator($a, $b, $char) {
switch($char) {
case '=': return $a = $b;
case '*': return $a * $b;
case '+': return $a + $b;
etc...
}
}
sí ... ¡la gente responde demasiado rápido! – felamaslen
si el operador es '=' su código producirá 'suma 'de operandos. ¿No debería haber un "descanso"? –
El '=' no haría nada en este caso, a menos que $ a se haya pasado como referencia. La asignación se perderá tan pronto como la función regrese, de lo contrario. Es solo un ejemplo. –
esa es la respuesta que estaba buscando :) – felamaslen
Me alegro de poder ayudar :) ¡Buena suerte! –