Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Asignar valores a resultados

Estas en el tema de Asignar valores a resultados en el foro de PHP en Foros del Web. Hola buenos días tengo el siguiente dilema para ver si podeis ayudarme: Consulta : GROUP_CONCAT(alumnos.Confirmado) Confir recojo los valores de la consulta $row_Recordset1['Confir']; El resultado ...
  #1 (permalink)  
Antiguo 11/09/2014, 05:31
 
Fecha de Ingreso: noviembre-2012
Mensajes: 73
Antigüedad: 11 años, 5 meses
Puntos: 1
Asignar valores a resultados

Hola buenos días tengo el siguiente dilema para ver si podeis ayudarme:
Consulta :
GROUP_CONCAT(alumnos.Confirmado) Confir

recojo los valores de la consulta
$row_Recordset1['Confir'];

El resultado es el siguiente:
4,1,1;

Lo que quisiera es separar el resultado y asignarles un valor si es 4 = 50 y si es 1 = 0

Podrias ayudarme.

Muchas gracias
  #2 (permalink)  
Antiguo 11/09/2014, 06:37
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: Asignar valores a resultados

Si $row_Recordset1['Confir'] es un string

Código PHP:
Ver original
  1. $ret = str_replace(array("4","1"), array("50","0"), $row_Recordset1['Confir']);
Lo anterior convierte "4,1,1;" en "50,0,0;".

Si $row_Recordset1['Confir'] es un array

Código PHP:
Ver original
  1. $ret = array_map(function($n){return str_replace(array("4","1"), array("50","0"), $n);}, $row_Recordset1['Confir']);
Lo anterior convierte

4,1,1;
4,2,20;
1,4,0;

en

50,0,0;
50,2,20;
0,50,0;
  #3 (permalink)  
Antiguo 11/09/2014, 06:45
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: Asignar valores a resultados

Si lo que quieres es simplemente separar los números en variables distintas:

Código PHP:
Ver original
  1. $cadena=trim($row_Recordset1['Confir'], ";");  //elimina el punto y coma
  2. $grupo=explode(",", $cadena);   //divide la cadena en trozos separados por la coma, $grupo es un array
  3.  
  4. $primero=$grupo[0];  //el primer elementos del array
  5. $segundo=$grupo[1];  //el segundo
  6. $tercero=$grupo[2];
  7.  
  8. //y después operas:
  9. if($primero==4){
  10.     $primero=50;
  11. }
  #4 (permalink)  
Antiguo 11/09/2014, 08:21
 
Fecha de Ingreso: noviembre-2012
Mensajes: 73
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Asignar valores a resultados

Muchas gracias rodrigo
Creo que encaja bien el ejemplo
"Si $row_Recordset1['Confir'] es un array"
Si ahora quisiera sumar el resultado que es lo que tendria que hacer?

4,1,1

Ahora con tu ayuda es:

50,0,0

Si quiero sumar ese resultado?

Puede ayudarme

Gracias
  #5 (permalink)  
Antiguo 11/09/2014, 08:36
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: Asignar valores a resultados

Para eso te sirve la función explode() que convierte la cadena "50,0,5" en una matriz [50] [0] [0], y la función array_sum(), que suma los elementos de la matriz.

Código PHP:
Ver original
  1. $grupo=explode(",", $cadena);   //divide la cadena en trozos separados por la coma, $grupo es un array
  2. $suma=array_sum($grupo);
Si $cadena="10,5,6", $suma va a valer el número 21.
  #6 (permalink)  
Antiguo 11/09/2014, 09:04
 
Fecha de Ingreso: noviembre-2012
Mensajes: 73
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Asignar valores a resultados

Muchísimas gracias por tu ayuda.
Gracias a vosotros vamos aprendiendo un poco mas cada dia.
Gracias
  #7 (permalink)  
Antiguo 11/09/2014, 09:11
 
Fecha de Ingreso: abril-2011
Ubicación: Vilcún, cerca de Temuco
Mensajes: 67
Antigüedad: 13 años
Puntos: 5
Respuesta: Asignar valores a resultados

Te completo el mensaje anterior. Con lo dicho, quedaría así:

Código PHP:
Ver original
  1. function sumar_esto($n){
  2.     $cadena=trim($n, ";");
  3.     $cadena = str_replace(array("4","1"), array("50","0"), $cadena);
  4.     $grupo=explode(",", $cadena);   //divide la cadena en trozos separados por la coma, $grupo es un array
  5.     return array_sum($grupo);      
  6.     }
  7.  
  8. $ret = array_map("sumar_esto", $row_Recordset1['Confir']);

La función "sumar_esto" elimina el punto y coma, reemplaza los valores de "4" y "1", convierte la cadena en tres números separados y devuelve la suma de esos números.

La función "array_map" está integrada en php, lo que hace es ejecutar la función "sumar_esto" en cada uno de los elementos del array $row_Recordset1['Confir'].

PERO OJO con los valores 4 y 1. Si tu aplicación recibe cualquier otro número también lo va a tratar de convertir. Por ejemplo, el 44 se convierte en 5050.

Entonces te conviene usar lo siguiente:

Código PHP:
Ver original
  1. function sumar_esto($n){
  2.     $cadena=trim($n, ";");
  3.     $grupo=explode(",", $cadena);
  4.     $grupo=array_map(function($f){
  5.     switch($f){
  6.       case 4: return 50;
  7.       case 1: return 0;
  8.       default: return $f;
  9.     }
  10.     }, $grupo);
  11.  
  12.     return array_sum($grupo);
  13.     }
  14.  
  15. $ret = array_map("sumar_esto", $row_Recordset1['Confir']);

y después de la línea 7 agregas cualquier otro valor que desees reemplazar.

Etiquetas: resultados
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:53.