Foros del Web » Programando para Internet » PHP »

Como evaluar varios IF (mas d 20) de manera mas corta, alguna alternativa?

Estas en el tema de Como evaluar varios IF (mas d 20) de manera mas corta, alguna alternativa? en el foro de PHP en Foros del Web. Hola, lo que pasa es que debo pasar un valor que viene desde dos arrays (los arrays se multiplican entre si y dan ese primer ...
  #1 (permalink)  
Antiguo 29/08/2012, 00:46
Avatar de heyimedd  
Fecha de Ingreso: enero-2009
Ubicación: Monterrey
Mensajes: 36
Antigüedad: 15 años, 11 meses
Puntos: 0
Como evaluar varios IF (mas d 20) de manera mas corta, alguna alternativa?

Hola, lo que pasa es que debo pasar un valor que viene desde dos arrays (los arrays se multiplican entre si y dan ese primer resultado) pero, ese primer resultado debe pasar por mas o menos 20 comprobaciones para ver si esta entre ese rango de numeros, yo como voy empezando como esto, pues lo que se me ocurre es hacerlo pasar por esos 20 if's pero a lo mejor alguien me puede orientar para hacerlo de una forma mas corta.
  #2 (permalink)  
Antiguo 29/08/2012, 00:56
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 5 meses
Puntos: 165
Respuesta: Como evaluar varios IF (mas d 20) de manera mas corta, alguna alternativa?

Expresiones regulares!
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #3 (permalink)  
Antiguo 29/08/2012, 01:31
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Como evaluar varios IF (mas d 20) de manera mas corta, alguna alternativa?

Si entendí correctamente, tienes algo como:

rango - inferior - superior
-------------------------------
1 - 0 - 5
2 - 6 -10
3 - 11 - 15
4 - 16 - 20
5 - 21 - 25
etc...
20 - 90 - 1000

Y necesitas saber en qué rango está el resultado obtenido?

De ser así, yo lo que haría sería crear un arreglo sólo con los limites superiores y recorrerlo para ver donde corresponde:

Código PHP:
Ver original
  1. // Inicializas con los valores que necesites
  2. $rangos = array(5, 10, 15, 20, 25, '/* ********* */ 1000);
  3.  
  4. // Por si no encontramos alguna coincidencia, por default asignamos el rango mayor
  5. $rango = 20;
  6.  
  7. // Recorres los rangos
  8. for($i = 0; $i < count($rangos); $i++) {
  9.    if($resultado < $rangos[$i]) {
  10.         // Lo encontramos, de aquí es!
  11.         $rango = $i;
  12.         // Cancelas el for
  13.         break;
  14.    }
  15. }
  16.  
  17. echo "$resultado pertenece al rango $i";
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 29/08/2012, 22:49
Avatar de heyimedd  
Fecha de Ingreso: enero-2009
Ubicación: Monterrey
Mensajes: 36
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Como evaluar varios IF (mas d 20) de manera mas corta, alguna alternativa?

Cita:
Iniciado por Triby Ver Mensaje
Si entendí correctamente, tienes algo como:

rango - inferior - superior
-------------------------------
1 - 0 - 5
2 - 6 -10
3 - 11 - 15
4 - 16 - 20
5 - 21 - 25
etc...
20 - 90 - 1000

Y necesitas saber en qué rango está el resultado obtenido?

De ser así, yo lo que haría sería crear un arreglo sólo con los limites superiores y recorrerlo para ver donde corresponde:

Código PHP:
Ver original
  1. // Inicializas con los valores que necesites
  2. $rangos = array(5, 10, 15, 20, 25, '/* ********* */ 1000);
  3.  
  4. // Por si no encontramos alguna coincidencia, por default asignamos el rango mayor
  5. $rango = 20;
  6.  
  7. // Recorres los rangos
  8. for($i = 0; $i < count($rangos); $i++) {
  9.    if($resultado < $rangos[$i]) {
  10.         // Lo encontramos, de aquí es!
  11.         $rango = $i;
  12.         // Cancelas el for
  13.         break;
  14.    }
  15. }
  16.  
  17. echo "$resultado pertenece al rango $i";

Hola, muchisimas gracias por tu explicación, el tema es que, el if no es solo para saber donde está el valor, si no para hacer un calculo dependiendo de su posición y a la vez, asignarlo a otro array para luego calcular el total.


por ejemplo:

Código PHP:
  <span class="Items">
<?



$cantidad 
count ($piezas);
//Sacamos los precios totales de cada producto
for ($i=1$i<=$cantidad$i++)
{
echo 
"<tr>"    ;
echo 
"<td><span class='Items'>".$piezas[$i]."</td></span>";
echo 
"<td><span class='Items'>".$articulos[$i]."</td></span>";
echo 
"<td><span class='Items'>".

$subtotalpieza[]=$piezas[$i]*$precio[$i]


.
"</td></span></tr>";
}
</
span>


//YA LUEGO PARA SACAR MI TOTAL HAGO

//Calculamos el total de la cotización
$total=0;
foreach (
$subtotalpieza as $subtotales)
{
$total=$total+$subtotales;
}
echo 
"<br><br>";
echo 
$total;
?>
el caso es que cuando hago:

Código PHP:
$piezas[$i]*$precio[$i
Piezas estaría multiplicandose por el valor que recoge desde mi formulario y quisiera que no fuera así, sino que del valor que recoge desde mi formulario que en todo caso sería el precio de compra le calculara la utilidad aproximada basandome en unos rangos por ejemplo,

calculara si es menor a 10 pesos por 2
si es menor de 20 por 1.8
si es menor de 50 por 1.5
si es menor de 100 por 1.4
si es menor de 200 por 1.3

y que cada valor lo agregara a

$subtotalpieza[] para que luego pueda hacer mi suma del total.


Ojalá me puedas echar un cable con eso, te lo agradecería muchisimo!

saludos y buenas noches.
  #5 (permalink)  
Antiguo 29/08/2012, 23:48
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Como evaluar varios IF (mas d 20) de manera mas corta, alguna alternativa?

Pues no veo el problema, puedes hacer una función que verifique cada cantidad y te devuelva el factor por el que debe multiplicarse, lo único que haría falta ahí sería tener los factores:

Código PHP:
Ver original
  1. // En el código anterior te sugerí cómo obtener el rango,
  2. // eso quedaría dentro de una función
  3. function obtenerFactor($cantidad) {
  4.     // Creas otro arreglo con los factores
  5.     $factores = array(2, 1.8, 1.5, 1.4, 1.3, /* *********** */);
  6.  
  7.     // Aquí el código que te sugerí
  8.  
  9.     // En vez de echo devuelves el factor
  10.     return $factores[$rango];
  11. }
  12.  
  13. // Calculas el subtotal, no entendí bien cómo lo quieres,
  14. // pero ya tienes el dato, úsalo a tu gusto ;-)
  15. $subtotalpieza[] = $cantidad * $precio * obtenerFactor($cantidad);
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: ciclos, enphp, evaluar
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 21:45.