Foros del Web » Programando para Internet » PHP »

Ordenar un vector de menor a mayor y mantener orden de los demas

Estas en el tema de Ordenar un vector de menor a mayor y mantener orden de los demas en el foro de PHP en Foros del Web. Estimados Tengo 3 vectores: Vendedoras: tiene las iniciales de cada vendedora Ventas_ven: ventas totales de cada vendedora mensual Meta: metas mensuales de la cada vendedora ...
  #1 (permalink)  
Antiguo 14/06/2009, 20:31
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 18 años, 5 meses
Puntos: 4
Ordenar un vector de menor a mayor y mantener orden de los demas

Estimados

Tengo 3 vectores:

Vendedoras: tiene las iniciales de cada vendedora
Ventas_ven: ventas totales de cada vendedora mensual
Meta: metas mensuales de la cada vendedora

Nesecito ordenar estos datos segun las ventas mensuales (menor a mayor) de cada vendedora obviamente tengo que poder mantener que ventas correspondes a que vendedora, trate de solucionar esto pasando los datos a una matriz asociativa pero me presenta problemas cuando hay vendendoras con la misma cantidad de ventas mensuales o con ventas totales igual a 0.

Cualquier sugerencia bienvenida, gracias.

Codigo de como trate de solucionarlo:
Código:
//	Genero vector asociativo con iniciales vendedora y valor ventas
	for ($i=0;$i<(count($vendedora));$i++)
	{
		$matriz[($ventas_ven[$i])]=$vendedora[$i];
		/* $matriz_meta[($ventas_ven[$i])]=$meta_ven[$i]; */
	}
//   Ordeno los vectores de menor a mayor segun las ventas
ksort($matriz);
ksort($matriz_meta);

//	Creo nuevos vectores ordenados con las vendedoras y sus ventas
	foreach ($matriz as $key => $val) {
		$ven[]=$val;
		$valor[]=$key;
	} 
    foreach ($matriz_meta as $key => $val) {
		$meta_vendedora[]=$val;
	}
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.
  #2 (permalink)  
Antiguo 15/06/2009, 03:11
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Ordenar un vector de menor a mayor y mantener orden de los demas

no, se, podrias juntar los arrays:
Código PHP:
// tus array son: $vendedoras, $ventas_ven, $meta
$tot_array = array();
foreach(
$ventas_ven as $k=>$v) {
    
$tot_array[$v] = array($vendedoras[$k],$v$meta[$k]);
}
ksort($tot_array); // o krsort($tot_array); 
asì ordinas el array $tot_array por su claves, o sea por los elementos de $ventas_ven, y tienes todavia la asociation entre los tres vectores gracias a $k.
en
$tot_array[$i][0]
$tot_array[$i][1]
$tot_array[$i][2]
tienes tus datos al variar de $i sobre los elementos de $ventas_ven.
Chao!
  #3 (permalink)  
Antiguo 15/06/2009, 10:12
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 18 años, 5 meses
Puntos: 4
Respuesta: Ordenar un vector de menor a mayor y mantener orden de los demas

Creo que entiendo tu idea pero no me resulta aun mostrar los valores del nuevo arreglo, seguire intentando.

si uso: echo $tot_array[397][1];

me muestra un total de ventas, pero al tratar de obtener el nombre de la vendendora no me resulta con

echo $tot_array[397][0];

Fuera de eso creo que el problema es que no me sirve tener de indice las ventas totales porque se me produciria el mismo problema de antes, que pasa cuando dos vendedoras tienen el mismo total de ventas? o no hicieron ninguna venta. Serian dos indices iguales.
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.

Última edición por Highlander; 15/06/2009 a las 10:48
  #4 (permalink)  
Antiguo 16/06/2009, 01:51
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Ordenar un vector de menor a mayor y mantener orden de los demas

Hola, tienes razon, asì se sobrescriven los elementos del array por ventas iguales, a ver:
Código PHP:
$vendedoras = array('pina''gina''lola''nella''tolla');
$ventas_ven = array('100''60''100''0''0');
$metas = array('A''C''E''B''D');

asort($ventas_ven); // Array ( [3] => 0 [4] => 0 [1] => 60 [2] => 100 [0] => 100 )  o sea la corespondencia key value sigue exacta

foreach($ventas_ven as $k=>$v) {
  echo 
"vendedora: ".$vendedoras[$k];
  echo 
" - metas: ".$metas[$k];
  echo 
" - ventas: ".$v;
  echo 
"<hr/>";
}
/*
el resultado es
vendedora: nella - metas: B - ventas: 0
vendedora: tolla - metas: D - ventas: 0
vendedora: gina - metas: C - ventas: 60
vendedora: lola - metas: E - ventas: 100
vendedora: pina - metas: A - ventas: 100
*/ 
Asì puede funcionar? Chao!
  #5 (permalink)  
Antiguo 22/06/2009, 10:55
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 18 años, 5 meses
Puntos: 4
Respuesta: Ordenar un vector de menor a mayor y mantener orden de los demas

Lo estoy probando y te aviso, gracias.

Excelente funciono a la perfección, gracias amigo.
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.

Última edición por Highlander; 23/06/2009 a las 14:16
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 22:36.