Foros del Web » Programando para Internet » PHP »

Borrar elementos duplicados en un array

Estas en el tema de Borrar elementos duplicados en un array en el foro de PHP en Foros del Web. Pues eso, como borro los elementos duplicados en un array. Saludoss y gracias por adelantado....
  #1 (permalink)  
Antiguo 17/01/2006, 03:14
 
Fecha de Ingreso: agosto-2004
Mensajes: 143
Antigüedad: 19 años, 7 meses
Puntos: 2
Borrar elementos duplicados en un array

Pues eso, como borro los elementos duplicados en un array.

Saludoss y gracias por adelantado.
  #2 (permalink)  
Antiguo 17/01/2006, 04:22
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 20 años, 7 meses
Puntos: 4
Yo uso esta funcion que hice:
Código PHP:
/**
     * Funcion que limpia un array de elementos repetidos
     * @access private
     * @param array $array El array a comprobar
     * @return array El array limpio
     */
    
function limpiarArray($array){
        
$retorno=null;
        if(
$array!=null){
            
$retorno[0]=$array[0];
        }
        for(
$i=1;$i<count($array);$i++){
            
$repetido=false;
            
$elemento=$array[$i];
            for(
$j=0;$j<count($retorno) && !$repetido;$j++){
                if(
$elemento==$retorno[$j]){
                    
$repetido=true;
                }
            }
            if(!
$repetido){
                
$retorno[]=$elemento;
            }
        }
        return 
$retorno;
    } 
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #3 (permalink)  
Antiguo 17/01/2006, 06:23
 
Fecha de Ingreso: agosto-2004
Mensajes: 143
Antigüedad: 19 años, 7 meses
Puntos: 2
graciass por la función, la probaré

Saludosss.
  #4 (permalink)  
Antiguo 17/01/2006, 06:39
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
De acuerdo no nos compliquemos

PHP nos provee de una función que hace eso por nosotros, se llama array_unique y es muy sencilla de usar, ejemplo:

Código PHP:
$con_duplicados=array(10,20,30,40,40,40,40,40,50);
$sin_duplicados=array_unique($con_duplicados);
foreach(
$sin_duplicados as $value//imprimimos $sin_duplicados
 
echo $value "<br/>";

//imprimirá
// 10
// 20
// 30
// 40
// 50 
  #5 (permalink)  
Antiguo 17/01/2006, 06:57
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 20 años, 7 meses
Puntos: 4
No me acordaba de esa funcion !! , pero ¿funcionaria igual si lo que hay en el array son objetos en lugar de numeros?
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #6 (permalink)  
Antiguo 09/09/2009, 12:40
 
Fecha de Ingreso: agosto-2009
Mensajes: 7
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Borrar elementos duplicados en un array

Código PHP:
<?php 
  
   
/* Our Array of products */ 
   
$attribs[] = array( 
                           
"name"         => "Test Product 1"
                           
"length"     => "42 cm"
                           
"weight"     => "0,5 kg"
                           
"price"     => "10 $"
                           
"stock"     => "100"
                        ); 

   
$attribs[] = array( 
                           
"name"         => "Test Product 2"
                           
"length"     => "42 cm"
                           
"weight"     => "1,5 kg"
                           
"price"     => "10 $"
                           
"stock"     => "200"
                        ); 

    
/* The nice stuff */ 

      
$new = array(); 
      
$exclude = array(""); 
      for (
$i 0$i<=count($attribs)-1$i++) { 
         if (!
in_array(trim($attribs[$i]["price"]) ,$exclude)) { $new[] = $attribs[$i]; $exclude[] = trim($attribs[$i]["price"]); } 
      } 
      
      
print_r($new); // $new is our sorted array 

?>
Esta me gusta mucho mas!!

también la pueden usar como funcion!!

Código PHP:
    public function array_elimina_duplicados($array$campo)
    {
        
$new = array(); 
        
$exclude = array(""); 
        for (
$i 0$i<=count($array)-1$i++) { 
            if (!
in_array(trim($array[$i][$campo]) ,$exclude)) { $new[] = $array[$i]; $exclude[] = trim($array[$i][$campo]); } 
        }
        
        return 
$new;
    } 
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:10.