Foros del Web » Programando para Internet » PHP »

necesito ayuda para encontrar valor en una cadena

Estas en el tema de necesito ayuda para encontrar valor en una cadena en el foro de PHP en Foros del Web. hola, a ver si alguien me puede sacar del atasco en que estoy. tengo esta cadena: Código PHP: 5 : 9.05 ,  10 : 10.38 ...
  #1 (permalink)  
Antiguo 16/09/2009, 08:00
Avatar de MisatoKatsuragi  
Fecha de Ingreso: abril-2009
Mensajes: 109
Antigüedad: 15 años
Puntos: 2
Pregunta necesito ayuda para encontrar valor en una cadena

hola, a ver si alguien me puede sacar del atasco en que estoy.

tengo esta cadena:

Código PHP:
5:9.0510:10.3820:17.0330:22.3540:26.8250:31.3960:35.2970:38.7480:41.7390:45.23100:48.42110:53.27120:57.09130:60.77140:64.23150:67.53160:70.66170:73.65180:76.46190:79.01200:80.89225:88.60250:95.79275:102.43 
que se compone de parejas de valores separadas entre si por comas las parejas y por dos puntos los valores: asi valor1:valor2

valor1 es un peso y valor 2 su precio. necesito llegar a la pareja a partir de un peso, que no será casi nunca exactamente el que aparce en la cadena... me explico


tengo un peso de 64 y necesito llegar a su precio que seria el correspondiente a 70 (ya que el valor anterior es 60 y esta por debajo asi que ese no es)


se que tengo que trocear la cadena y ?evaluar? los valores de la primera mitad de cada pareja hasta encontrar el primero que sea mayor que el valor de referencia (64 en ese caso) pero me quedo ahi, no se como hacerlo, alguien me puede ayudar??


Muchisimas gracias.
  #2 (permalink)  
Antiguo 16/09/2009, 08:27
5xc
 
Fecha de Ingreso: septiembre-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: necesito ayuda para encontrar valor en una cadena

Prueba con..

$valor = explode (",", $cadena);

y luego recorres con un for hasta que el $valor[$i] sea mayor que lo que buscas.


Bueno ahora que miro, luego tendrías que hacer otro explode(":",$valor) para sacar el $valor1 ese.
  #3 (permalink)  
Antiguo 16/09/2009, 09:14
Avatar de MisatoKatsuragi  
Fecha de Ingreso: abril-2009
Mensajes: 109
Antigüedad: 15 años
Puntos: 2
Respuesta: necesito ayuda para encontrar valor en una cadena

$valor entonces seria directamente un array , no??? quiero decir, no tengo luego que ponerle yo que lo meta en un array , lo mete el solito, no?

voy a probar y te cuento, gracias!
  #4 (permalink)  
Antiguo 16/09/2009, 09:28
5xc
 
Fecha de Ingreso: septiembre-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: necesito ayuda para encontrar valor en una cadena

Cita:
Iniciado por MisatoKatsuragi Ver Mensaje
$valor entonces seria directamente un array , no??? quiero decir, no tengo luego que ponerle yo que lo meta en un array , lo mete el solito, no?

voy a probar y te cuento, gracias!
Sí lo mete solo. En el for le pones que llegue hasta <count($valor)

Entonces $valor será

$valor[0]= 5:9.05
$valor[1] = 10:10.38

etc

Dentro del bucle tendrías que hacer otro explode para separar los valores y así ya tener sueltos el peso y el precio.
  #5 (permalink)  
Antiguo 16/09/2009, 10:35
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 5 meses
Puntos: 69
Respuesta: necesito ayuda para encontrar valor en una cadena

A ver si esto te sirve :
Código PHP:
Ver original
  1. <?php
  2. // Primero convertimos el string en un array indexado por precio
  3. $cadena = ' 5:9.05, 10:10.38, 20:17.03, 30:22.35, 40:26.82, 50:31.39, 60:35.29, 70:38.74, 80:41.73, 90:45.23, 100:48.42, 110:53.27, 120:57.09, 130:60.77, 140:64.23, 150:67.53, 160:70.66, 170:73.65, 180:76.46, 190:79.01, 200:80.89, 225:88.60, 250:95.79, 275:102.43';
  4. $valores = array();
  5. foreach(explode(',', $cadena) as $opc)
  6. {
  7.     list($peso, $valor) = explode(':', trim($opc));
  8.     $valores[$peso] = $valor;
  9. }
  10.  
  11. // Y ahora llevamos a cabo la búsqueda.
  12. // Una bastante mala en realidad, pero si los valores son pocos, funciona.
  13. $busqueda = 201;
  14. echo $precio = buscarPrecioPorPeso($busqueda);
  15.  
  16. function buscarPrecioPorPeso($busqueda)
  17. {
  18.     global $valores; // el array que creamos antes.
  19.     reset($valores);
  20.    
  21.     list($peso, $precio) = each($valores);
  22.     while($peso < $busqueda ) {
  23.         list($peso, $precio) = each($valores);
  24.     }
  25.     return $precio;
  26. }
__________________
Tutoriales Photoshop | Web-Studio.com.ar
Artículos PHP | ZonaPHP.com
  #6 (permalink)  
Antiguo 16/09/2009, 14:18
Avatar de MisatoKatsuragi  
Fecha de Ingreso: abril-2009
Mensajes: 109
Antigüedad: 15 años
Puntos: 2
Respuesta: necesito ayuda para encontrar valor en una cadena

FANTASTICO!!!!!!


Muchas gracias a los 2 :D:D:D:D:D:D:D:D

funciona perfectamente, eso si, he tenido que mover la llamada a la funcion a despues de declararla... si la dejaba asi me daba error pero ya os digo, que va perfecto

GRACIAS

PD pregunta tecnica... que diferencia hay entre return y echo?????? (ups, igual deberia abrir un post nuevo??)
  #7 (permalink)  
Antiguo 16/09/2009, 14:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: necesito ayuda para encontrar valor en una cadena

Return regresa el valor desde una función. Echo es una instrucción para imprimir alguna cadena en el output de salida.

Saludos.
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 04:12.