Foros del Web » Programando para Internet » PHP »

Operadores dinamicos en un if

Estas en el tema de Operadores dinamicos en un if en el foro de PHP en Foros del Web. Hola ammigos esto como se puede hacer estoy intentando hacerlo dinamico pero algo algo mal e echo una funcion con un simple if que quierop ...
  #1 (permalink)  
Antiguo 26/02/2015, 05:01
 
Fecha de Ingreso: abril-2003
Mensajes: 587
Antigüedad: 21 años
Puntos: 5
Operadores dinamicos en un if

Hola ammigos esto como se puede hacer estoy intentando hacerlo dinamico pero algo algo mal e echo una funcion con un simple if que quierop que sea todo dinamico lo estoy haciendo asi pero no va bien.

Código PHP:
    public function saldo($cantidad1,$operador,$cantidad2)
    {
        
// // /// // / // // // // // // // // // // //
        
switch ($operador) {
            case 
"<":
                
$condicion $cantidad1."<".$cantidad2;
            break;
            case 
">":
                
$condicion $cantidad1.">".$cantidad2;
            break;
            case 
"==":
                
$condicion $cantidad1."==".$cantidad2;
            break;
            case 
">=":
                
$condicion $cantidad1.">=".$cantidad2;
            break;
            case 
"<=":
                
$condicion $cantidad1."<=".$cantidad2;
            break;
        }
        
        
// // /// // / // // // // // // // // // // //
        
if(eval($condicion))
        {
            echo 
"SI SE CUMPLE";
        }else
        {
            echo 
"NO SE CUMPLE";
        }
        
// // /// // / // // // // // // // // // // //
    

EL EVAL no me esta trabajando.

como hago que el $valor y le estoy pasando un operador > < == etc... tome efecto en el if.
__________________
Si la vida te da la espalda tocale el culo

Última edición por freedatos; 26/02/2015 a las 05:42
  #2 (permalink)  
Antiguo 26/02/2015, 07:22
 
Fecha de Ingreso: enero-2015
Mensajes: 205
Antigüedad: 9 años, 2 meses
Puntos: 18
Respuesta: Operadores dinamicos en un if

Bueno, yo no lo haría así, lo haría un poco más simple. Pero es igual de dinámico que el tuyo. No me gusta usar eval x que no es una función muy clara... pero sobre gustos colores...

Este es el código que funciona correctamente, para lo que tu quieres.

Código PHP:
Ver original
  1. saldo (1,"==",2);
  2.     function saldo($cantidad1,$operador,$cantidad2)
  3.     {
  4.         switch ($operador) {
  5.             case "<":
  6.                 $condicion = $cantidad1 < $cantidad2;
  7.             break;
  8.             case ">":
  9.                 $condicion = $cantidad1 > $cantidad2;
  10.             break;
  11.             case "==":
  12.                 $condicion = $cantidad1 ==$cantidad2;
  13.             break;
  14.             case ">=":
  15.                 $condicion = $cantidad1 >=$cantidad2;
  16.             break;
  17.             case "<=":
  18.                 $condicion = $cantidad1<=$cantidad2;
  19.             break;
  20.         }
  21.      
  22.        
  23.      if($condicion)   {
  24.             echo "SI SE CUMPLE";
  25.         }else
  26.         {
  27.             echo "NO SE CUMPLE";
  28.         }
  29.        
  30.     }
  #3 (permalink)  
Antiguo 26/02/2015, 10:00
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Operadores dinamicos en un if

Cita:
Iniciado por freedatos Ver Mensaje
Código PHP:
    public function saldo($cantidad1,$operador,$cantidad2)
    {
                
$less=($cantidad1 $cantidad2);
                
$greater=($cantidad1 $cantidad2);
                
$equal=!($less || $greater);
        
// // /// // / // // // // // // // // // // //
        
switch ($operador) {
            case 
"<":
                              return 
$less;
            break;
            case 
">":
                             return 
$greater;
            break;
            case 
"==":
                             return 
$equal;
            break;
            case 
">=":
                             return 
$equal || $greater;
            break;
            case 
"<=":
                             return 
$equal || $less;
            break;
        }
        
    } 

Etiquetas: dinamicos, operadores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:30.