Foros del Web » Programando para Internet » PHP »

Ordenar array multidimensional por un campo

Estas en el tema de Ordenar array multidimensional por un campo en el foro de PHP en Foros del Web. Buenas intento recuperar un ranking de savores mas botados con php y mysql de una base de datos. Mi codigo es el siguiente: function cogersabores() ...
  #1 (permalink)  
Antiguo 04/06/2012, 06:08
 
Fecha de Ingreso: diciembre-2010
Mensajes: 47
Antigüedad: 13 años, 4 meses
Puntos: 0
Ordenar array multidimensional por un campo

Buenas intento recuperar un ranking de savores mas botados con php y mysql de una base de datos.

Mi codigo es el siguiente:

function cogersabores() {
$user_query ="SELECT sabores FROM ranking";
$rows =mysql_fetch_row(mysql_query($user_query));

return $rows;

}

function cogervotos() {

$user_query ="SELECT votos FROM ranking";
$rows = mysql_query($user_query);

return $rows;
}
function orderMultiDimensionalArray ($toOrderArray, $field, $inverse) {
$inverse=false;
$position = array();
$newRow = array();
foreach ($toOrderArray as $key => $row) {
$position[$key] = $row[$field];
$newRow[$key] = $row;
}
if ($inverse) {
arsort($position);
}
else {
asort($position);
}
$returnArray = array();
foreach ($position as $key => $pos) {
$returnArray[] = $newRow[$key];
}
return $returnArray;
}

$toOrderArray=cogersabores();

$field=cogervotos();

$returnArray=orderMultiDimensionalArray($toOrderAr ray, $field, $inverse);

el caso es que cuando en javascript intento pintarlo de la siguiente manera:

$.ajax({
type: "POST",
url: get_ranking.php,
success: function() {
var arrayordenado = <?php $returnArray?>
alert(arrayordenado);
}
});

}
no puedo recuperar los valores del array
alguien puede orientarme a como podria hacerlo
para pintar los sabores de forma ordenada?
  #2 (permalink)  
Antiguo 04/06/2012, 06:42
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Ordenar array multidimensional por un campo

Yo tengo una función que me cree para hacer algo parecido (ordenar por cualquier campo del array):

Código PHP:
function OrdenarArray ($ArrayDesordenado$campo){
    
$claves = array();
    
//Guardamos en el array $claves los indices y el campo que queremos ordenar
    
foreach ($ArrayDesordenado as $clave => $fila){
      
$claves[$clave] = $fila[$campo];
    }
    
//Ordenamos el array por el contenido, que es el campo que hemos elegido.
    
asort($claves);
    
//recorremos el array de claves ya ordenado y vamos rellenando un nuevo array
    //con los campos completos con el nuevo orden
    //Recorremos el array de claves ordenadas y rellenamos de nuevo nuestro array
    
foreach ($claves as $clave => $fila){
      
$this->farmacia[] = $ArrayDesordenado[$clave];
    }

Espero que te sirva y si tienes alguna duda, me lo comentas a ver si te puedo ayudar en algo.

Saludos
  #3 (permalink)  
Antiguo 04/06/2012, 07:39
 
Fecha de Ingreso: diciembre-2010
Mensajes: 47
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Ordenar array multidimensional por un campo

no entiendo muy bien la funcion
que seria $campo?

yo en mi caso he metido en 2 arrays los campos
los sabores en un array $sabores
y los votos en otro $votos

tendria que meterlo todo en un array de 2dimensiones para que funcionara?

como recupero de la consulta el array con 2 dimensiones si es que si que lo necesito..
  #4 (permalink)  
Antiguo 04/06/2012, 11:42
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Ordenar array multidimensional por un campo

Creo que antes de meterte a ordenar datos con funciones php, te convendría revisar si puedes ordenar los datos de origen con el parámetro sort de mysql.
  #5 (permalink)  
Antiguo 05/06/2012, 05:45
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Ordenar array multidimensional por un campo

Cita:
Iniciado por danieler87 Ver Mensaje
no entiendo muy bien la funcion
que seria $campo?

yo en mi caso he metido en 2 arrays los campos
los sabores en un array $sabores
y los votos en otro $votos

tendria que meterlo todo en un array de 2dimensiones para que funcionara?

como recupero de la consulta el array con 2 dimensiones si es que si que lo necesito..
A la función sólo tienes q pasarle 2 parámetros, el array/matriz que quieres ordenar y el campo por el que quieres ordenar la matriz y ya está.

Así de sencillo.

Código PHP:
function OrdenarArray ($ArrayDesordenado$campo){
    
$claves = array();
    
//Guardamos en el array $claves los indices y el campo que queremos ordenar
    
foreach ($ArrayDesordenado as $clave => $fila){
      
$claves[$clave] = $fila[$campo];
    }
    
//Ordenamos el array por el contenido, que es el campo que hemos elegido.
    
asort($claves);
    
//recorremos el array de claves ya ordenado y vamos rellenando un nuevo array
    //con los campos completos con el nuevo orden
    //Recorremos el array de claves ordenadas y rellenamos de nuevo nuestro array
    
foreach ($claves as $clave => $fila){
      
$NuevoArrayOrdenado[] = $ArrayDesordenado[$clave];
    }


Etiquetas: multidimensional, mysql
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 07:25.