Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Buscar duplicado en un array

Estas en el tema de Buscar duplicado en un array en el foro de PHP en Foros del Web. Hola quisiera saber la forma de encontrar un resultado duplicado en el mismo array ejemplo: Código PHP: $array =array( "pedro" , "juan" , "paco" , ...
  #1 (permalink)  
Antiguo 08/03/2013, 11:40
 
Fecha de Ingreso: agosto-2008
Mensajes: 272
Antigüedad: 16 años, 2 meses
Puntos: 1
Buscar duplicado en un array

Hola quisiera saber la forma de encontrar un resultado duplicado en el mismo array ejemplo:

Código PHP:
$array=array("pedro","juan","paco","pedro"); 
quisiera que la salida fuera:

Se ha encontrado un elemento duplicado: Pedro en la posición 0 y 3

Lo unico que he logrado es ver si hay alguno duplicado pero no me dice donde ni cual. el codigo es

Código PHP:
if( (count($array))!=(count(array_unique($array)){Echo "hay registros duplicados, pero no se cuales ni endonde";} 
  #2 (permalink)  
Antiguo 08/03/2013, 11:54
Avatar de montealegreluis  
Fecha de Ingreso: mayo-2012
Ubicación: Puebla, Puebla
Mensajes: 64
Antigüedad: 12 años, 5 meses
Puntos: 16
Respuesta: Buscar duplicado en un array

Hola

Creo que te puede servir la función array_intersect para saber qué valores están repetidos:

http://www.php.net/manual/en/functio...-intersect.php

Te devuelve un array con los valores repetidos (aunque tampoco sabrías en que posición)

[Corrección: No me di cuenta que es sobre el mismo array, creo que no te servira... :S]

Saludos!
__________________
RTFM: Read The Fine Manual...

http://www.comunidadphppuebla.com
https://github.com/ComPHPPuebla
  #3 (permalink)  
Antiguo 08/03/2013, 11:59
 
Fecha de Ingreso: agosto-2008
Mensajes: 272
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Buscar duplicado en un array

asi es :S y mi array tiene aprox 6mil y cacho de claves :s lo que intente es con un for buscar en todo el array pero pfff eso es demasiado proceso,

pues tendria que buscar en el array mas de 6 mil veces :S
  #4 (permalink)  
Antiguo 08/03/2013, 12:30
Avatar de montealegreluis  
Fecha de Ingreso: mayo-2012
Ubicación: Puebla, Puebla
Mensajes: 64
Antigüedad: 12 años, 5 meses
Puntos: 16
Respuesta: Buscar duplicado en un array

Hola,

Espero que este gist te sirva, no se me ocurre una forma más rápida de recorrer un arreglo tan largo. En el ejemplo no sabrías en que posisicón están repetidos, pero si cuales y cuantas veces se repiten.

https://gist.github.com/MontealegreLuis/5118639

Espero te sirva, saludos!
__________________
RTFM: Read The Fine Manual...

http://www.comunidadphppuebla.com
https://github.com/ComPHPPuebla
  #5 (permalink)  
Antiguo 08/03/2013, 14:18
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Buscar duplicado en un array

A mi se me ocurre algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $arr = array('pedro', 'juan', 'paco', 'pedro', 'juan', 'pedro', 'andres');
  4. $res = array_diff($arr, array_diff(array_unique($arr), array_diff_assoc($arr, array_unique($arr))));
  5.  
  6. foreach(array_unique($res) as $v) {
  7.     echo "Duplicado $v en la posicion: " .  implode(', ', array_keys($res, $v)) . '<br />';      
  8. }
Cita:
Duplicado pedro en la posicion: 0, 3, 5
Duplicado juan en la posicion: 1, 4
Prueba a ver que tal.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #6 (permalink)  
Antiguo 11/03/2013, 16:39
 
Fecha de Ingreso: agosto-2008
Mensajes: 272
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: Buscar duplicado en un array

mil gracias funciono de maravilla
  #7 (permalink)  
Antiguo 11/04/2013, 20:20
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 8 meses
Puntos: 7
Respuesta: Buscar duplicado en un array

Hola!

me gustaría ampliar el tema de mega0079 y preguntarle a Andresdzphp si ese código que él presento puede adaptarse para un array multidimensional como este:

Array (
[0] => Array ( [nom_ingrediente] => Cebolla )
[1] => Array ( [nom_ingrediente] => Cebolla de verdeo )
[2] => Array ( [nom_ingrediente] => Cebolla de almácigo )
[3] => Array ( [nom_ingrediente] => Cebolla de verdeo )
)

ya estuve intentando algunos injertos pero la verdad me cuesta bastante entender detalladamente lo que hace el código presentado por Andresdzphp y así no creo que llegue a ningún lado

si se puede, por favor una orientación para poder encontrar alguna solución?

Desde ya muchas gracias! Saludos!
  #8 (permalink)  
Antiguo 11/04/2013, 20:47
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Buscar duplicado en un array

Todo es posible, que resultado estás buscando?
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #9 (permalink)  
Antiguo 11/04/2013, 21:05
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 8 meses
Puntos: 7
Respuesta: Buscar duplicado en un array

hola andresdzphp!, gracias por responder. Quiero lo mismo que mega0079, extraer el resultado duplicado pero sin necesidad de saber la posición en el array ni nada de eso, simplemente saber cual es el resultado duplicado.
  #10 (permalink)  
Antiguo 11/04/2013, 21:28
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Buscar duplicado en un array

Pues se me ocurre algo así:

Código PHP:
Ver original
  1. <?php
  2.  
  3. $ingredientes = array(
  4.     array(
  5.     'nom_ingrediente' => 'Cebolla',
  6.     ),
  7.     array(
  8.     'nom_ingrediente' => 'Cebolla de verdeo',
  9.     ),
  10.     array(
  11.     'nom_ingrediente' => 'Cebolla de almácigo',
  12.     ),
  13.     array(
  14.     'nom_ingrediente' => 'Cebolla de verdeo',
  15.     ),
  16. );
  17.  
  18. $res = array_count_values(array_map(function($ingre) {
  19.    return $ingre['nom_ingrediente'];
  20. }, $ingredientes));
  21.  
  22. echo '<pre>';
  23. print_r($res);
  24. echo '</pre>';

Cita:
Array
(
[Cebolla] => 1
[Cebolla de verdeo] => 2
[Cebolla de almácigo] => 1
)
Así sabes cual está repetido y cuantas veces.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #11 (permalink)  
Antiguo 12/04/2013, 07:43
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 8 meses
Puntos: 7
Respuesta: Buscar duplicado en un array

Gracias andresdzphp! funciona de maravilla!!

ahora sólo me falta filtrar el valor más alto que sería el resgistro que está repetido ;) pero eso lo consigo de alguna forma.

un excelente código, gracias nuevamente.

Etiquetas: duplicado, registro
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 08:17.