Foros del Web » Programando para Internet » PHP »

Como puedo mostrar claves de array duplicadas?

Estas en el tema de Como puedo mostrar claves de array duplicadas? en el foro de PHP en Foros del Web. Hola a todos, el problema que tengo es que quiero mostrar claves repetidas junto a sus valores de un array asociativo. Me he fijado que ...
  #1 (permalink)  
Antiguo 14/02/2013, 07:55
Avatar de didix16  
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Como puedo mostrar claves de array duplicadas?

Hola a todos, el problema que tengo es que quiero mostrar claves repetidas junto a sus valores de un array asociativo. Me he fijado que solo se muestra una vez y con el último valor que se le asigna. ¿Como puedo hacer para que eso no pase y se muestre correctamente? Muchas gracias
  #2 (permalink)  
Antiguo 14/02/2013, 08:57
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 13 años, 2 meses
Puntos: 397
Respuesta: Como puedo mostrar claves de array duplicadas?

Pues lo único que me me ocurre es separar esa informacion en arrays distintos...

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 14/02/2013, 10:40
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Como puedo mostrar claves de array duplicadas?

Por definición un array asociativo no puede hacer lo que planteas..., de todas formas puedes guardar en la key un array con los elementos asociados a esa key.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 15/02/2013, 04:13
Avatar de didix16  
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Como puedo mostrar claves de array duplicadas?

Podría entonces, guardar un array con todas las keys incluso si están repetidas?. De no ser así, como podría hacer lo que dice masterpuppet? Gracias.
  #5 (permalink)  
Antiguo 15/02/2013, 06:54
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: Como puedo mostrar claves de array duplicadas?

Por definición, no puedes "mostrar claves repetidas" de un array, porque en ningún momento vas a tener claves repetidas.
Lo que va a ocurrir, es que cada vez que introduzcas un elemento con una clave, si esa clave ya existe, sobreescribirá a la anterior.
Para evitarlo, en vez de hacer un array asociativo de tipo clave=>valor, haces un array de tipo clave=>array de valores.
En vez de hacer :
Código PHP:
Ver original
  1. $miArray['z']=3;
haces
Código PHP:
Ver original
  1. $miArray['z'][]=3;
  #6 (permalink)  
Antiguo 15/02/2013, 15:59
Avatar de didix16  
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Como puedo mostrar claves de array duplicadas?

Vale. Entonces para transformar el array que tengo del tipo clave => valor, como lo hago para pasarlo al tipo clave => array valores ? Me podrías sugerir que código debería utilizar o que funciones podría aplicar. Muchas gracias
  #7 (permalink)  
Antiguo 15/02/2013, 17:27
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: Como puedo mostrar claves de array duplicadas?

En el array que tienes clave=>valor, no hay repeticiones.No puede haberlas.Tienes que ir a la fuente de donde cargas ese array, sea una query, o lo que sea.
  #8 (permalink)  
Antiguo 17/02/2013, 06:26
Avatar de didix16  
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Como puedo mostrar claves de array duplicadas?

Entonces debo modificar directamente el array clave => valor y editarlo para que sea clave => array valores? Es que es un array bastante grande.. de por lo menos mas de 5600 entradas..
  #9 (permalink)  
Antiguo 17/02/2013, 06:33
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: Como puedo mostrar claves de array duplicadas?

El hecho de que estás trabajando con un array "bastante grande" (que no lo es), no cambia por la solución que apliques...Van a seguir siendo 5600 entradas lo hagas como lo hagas..
  #10 (permalink)  
Antiguo 17/02/2013, 09:04
Avatar de didix16  
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Como puedo mostrar claves de array duplicadas?

Perdón no acabo de entenderlo. Osea el array que yo tengo tiene sobre unas 5600 entradas más o menos, entonces lo que quiero ahora es si hay alguna solución para que pueda editar el array mediante un script via php para no tener que hacerlo yo manualmente, es decir que el propio script me transforme el array del tipo clave => valor a clave => array valores. Es eso posible o tendría que cambiarlo manualmente? Gracias
  #11 (permalink)  
Antiguo 17/02/2013, 13:28
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: Como puedo mostrar claves de array duplicadas?

A ver si lo entendemos..el array que tienes ahora mismo es un array asociativo?
  #12 (permalink)  
Antiguo 18/02/2013, 00:54
 
Fecha de Ingreso: abril-2012
Ubicación: 41°37′00″N, 00°37′00″E
Mensajes: 462
Antigüedad: 12 años, 7 meses
Puntos: 33
Respuesta: Como puedo mostrar claves de array duplicadas?

Buenas,

A ver si ayudo un poco

@didix16: Lo que tendrías que hacer (lo que dice dashtrash), es que, en el momento que creas el array sobre el que quieres comprobar los repetidos, deberías añádir un "[]" tras el índice (así crea un array en el índice).

Es decir, actualmente te pasa algo así:

Código:
**Dentro del bucle**
vuelta 0:

 - Par valores: clave1:valor1

$array = array('clave1' => valor1)

vuelta 1:

 - Par valores:clave2:valor5

$array = array('clave1' => valor1, 'clave2' => valor5)

vuelta 2:

 - Par valores:clave2:valor2

$array = array('clave1' => valor1, 'clave2' => valor2)
Añadiendo el "[]", sucedería:


Código:
**Dentro del bucle**
vuelta 0:

 - Par valores: clave1:valor1

$array = array('clave1' => array(valor1))

vuelta 1:

 - Par valores:clave2:valor5

$array = array('clave1' => array(valor1), 'clave2' => array(valor5))

vuelta 2:

 - Par valores:clave2:valor2

$array = array('clave1' => array(valor1), 'clave2' => array(valor5, valor2))
Y por los índices del nuevo array no te preocupes, añadiendo "[]" (sin índice), PHP toma como índice el primer hueco libre de manera automática.

Luego sería cosa de hacer algo como:

Código:
foreach($array as $k => $v)
  for($i=1;$i<count($v);$i++)
    echo("Valor repetido en CLAVE $k: ".$v[$i]);
Espero ayude a aclarar un poco

Saludos

Etiquetas: claves
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:38.