Foros del Web » Programando para Internet » PHP »

Ordenamiento de elementos de un array por frecuencia

Estas en el tema de Ordenamiento de elementos de un array por frecuencia en el foro de PHP en Foros del Web. Hola gente sabia, necesito una ayuda, tengo un arreglo con muchos elementos y entre ellos hay repetidos, necesito obtener ese arreglo de tal forma que ...
  #1 (permalink)  
Antiguo 27/06/2006, 22:02
Avatar de Po5i  
Fecha de Ingreso: julio-2004
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
Ordenamiento de elementos de un array por frecuencia

Hola gente sabia, necesito una ayuda, tengo un arreglo con muchos elementos y entre ellos hay repetidos, necesito obtener ese arreglo de tal forma que al inicio (o al final) tener los elementos que más veces están repetidos (en orden) hasta lo que no se encuentran repetidos.

Ejemplo:

los elementos de arr son: 1,3,5,3,1,7,9,1

deseo un arreglo asi: 1,3,5,7,9

Como puedo hacerlo, hay alguna funcion ya hecha? he tratado de implementarlo y me ha resultado medio feo.
  #2 (permalink)  
Antiguo 28/06/2006, 10:42
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 3 meses
Puntos: 9
Proba con esto:
Código PHP:
<?
function EliminarRepetidos($array){
$new = array();
$j 0;

    for (
$i $i count($array) ; $i++){
        if (!
in_array($array[$i],$new){
        
$new[$j] = $array[$i];
        
$j++;
        }    
    }

return 
sort($new)
}
?>
  #3 (permalink)  
Antiguo 28/06/2006, 11:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
También hay una función directa de PHP al respecto:

array_unique()
www.php.net/array_unique

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 28/06/2006, 11:44
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
De acuerdo checa este post

http://www.forosdelweb.com/showthrea...t=array_unique
__________________
gerardo
  #5 (permalink)  
Antiguo 28/06/2006, 15:04
Avatar de Po5i  
Fecha de Ingreso: julio-2004
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
mmm, parece que no me entendieron, me han proporcionado respuestas para eliminar elementos repetidos, lo que yo quiero hacer es una funcion ke me devuelva otro arreglo, en el cual esten los mismos elementos ORDENADOS por "numero de veces que se repite", (si se repite 5 veces ira antes que el ke se repite 4 veces".

Alguna idea? yo estaba pensando en algo asi como tener un campo con el # de repeticiones, y luego ordenarlo por ese campo.
  #6 (permalink)  
Antiguo 28/06/2006, 15:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero cuando hablas de "campo" .. te refieres a que ese dato proviene de una BBDD? (bajo una consulta SQL?)

Por otro lado .. tu ejemplo
Cita:
los elementos de arr son: 1,3,5,3,1,7,9,1

deseo un arreglo asi: 1,3,5,7,9
No quedó claro lo que realmente quieres (o fué mucha coincidencia) ... Pero bueno .. una vez aclarado, podrías basarte en:

array_count_values()
www.php.net/array_count_values

Por lo menos esa función te arroja un array con tus indices y las veces que se repiten .. tendrías que ordenar por esos valores ...

Te recomendaría ver las funciones de manejo de array's que dispone PHP .. tal vez encuentres otra mejor para tu propósito o en combinación con unas pocas más funciones llegues a tu fin.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 28/06/2006, 15:41
Avatar de Po5i  
Fecha de Ingreso: julio-2004
Mensajes: 130
Antigüedad: 19 años, 8 meses
Puntos: 0
No, al hablar de campo me referia a algo asi como un arreglo bidimensional.

Código PHP:
<?php
$matriz 
= array(1"hola"1"mundo""hola");
array_count_values($matriz); // devuelve array(1=>2, "hola"=>2, "mundo"=>1)
?>  

El resultado del ejemplo seria:

Array
(
    [1] => 2
    [hola] => 2
    [mundo] => 1
)
Exacto, si aquella funcion del php me devuelve en ese orden (los que mas se repiten al inicio del arreglo y asi consecutivamente) me sirve y ademas no me arroja indices sino los mismos valores como indices.

Gracias

Última edición por Po5i; 28/06/2006 a las 15:49
  #8 (permalink)  
Antiguo 28/06/2006, 15:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Po5i
No, al hablar de campo me referia a algo asi como un arreglo bidimensional.



Exacto, si aquella funcion del php me devuelve en ese orden (los que mas se repiten al inicio del arreglo y asi consecutivamente) me sirve y ademas no me arroja indices sino los mismos valores como indices.

Gracias
Me alegro .. para otra vez ya sabes:

www.php.net/array

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 12:47.