Foros del Web » Programando para Internet » PHP »

Obtener elementos de array con sub elementos sin repetirse

Estas en el tema de Obtener elementos de array con sub elementos sin repetirse en el foro de PHP en Foros del Web. Buenas a todos! De nuevo por aquí con algunas dudas, pasa que tengo un array con sub elementos(por así decirlo) y necesito que se obtengan ...
  #1 (permalink)  
Antiguo 05/07/2014, 18:01
 
Fecha de Ingreso: diciembre-2012
Mensajes: 5
Antigüedad: 11 años, 4 meses
Puntos: 0
Obtener elementos de array con sub elementos sin repetirse

Buenas a todos!

De nuevo por aquí con algunas dudas, pasa que tengo un array con sub elementos(por así decirlo) y necesito que se obtengan 3 valores al azar pero sin repetirse estos.

El array es el siguiente:

Código PHP:
Ver original
  1. (
  2.     [0] => Array
  3.         (
  4.             [uid] => 1
  5.             [ticket_code] => 0oreb8yo
  6.         )
  7.  
  8.     [1] => Array
  9.         (
  10.             [uid] => 1
  11.             [ticket_code] => 2oeii8hm
  12.         )
  13.  
  14.     [2] => Array
  15.         (
  16.             [uid] => 1
  17.             [ticket_code] => m0dwtjiw
  18.         )
  19.  
  20.     [3] => Array
  21.         (
  22.             [uid] => 1
  23.             [ticket_code] => q6c7cymb
  24.         )
  25.  
  26.     [4] => Array
  27.         (
  28.             [uid] => 1
  29.             [ticket_code] => zyqhm5bj
  30.         )
  31.  
  32.     [5] => Array
  33.         (
  34.             [uid] => 1
  35.             [ticket_code] => amdqzjpi
  36.         )
  37.  
  38.     [6] => Array
  39.         (
  40.             [uid] => 2
  41.             [ticket_code] => tzql7l42
  42.         )
  43.  
  44.     [7] => Array
  45.         (
  46.             [uid] => 2
  47.             [ticket_code] => gap0r6vf
  48.         )
  49.  
  50.     [8] => Array
  51.         (
  52.             [uid] => 2
  53.             [ticket_code] => ypqum5yz
  54.         )
  55.  
  56.     [9] => Array
  57.         (
  58.             [uid] => 4
  59.             [ticket_code] => smupluac
  60.         )
  61.  
  62.     [10] => Array
  63.         (
  64.             [uid] => 4
  65.             [ticket_code] => 9d8jsha7
  66.         )
  67.  
  68.     [11] => Array
  69.         (
  70.             [uid] => 5
  71.             [ticket_code] => 6hdnja42
  72.         )
  73.  
  74. )

Y necesito que se obtengan 3 "ticket_code", pero sin que en estos se repita el "uid".

Para hacerlo con un array simple me dieron esta solución, pero no se como hacerlo con este nuevo array.
Código PHP:
Ver original
  1. $array = array(2, 2, 1, 3, 3, 3, 4, 4, 5, 5, 6);
  2. $nuevo = array();
  3. $nuevo[] = $array[array_rand($array)];
  4. $i = 1;
  5. while ($i < 3)
  6.     if (!in_array($aux = $array[array_rand($array)], $nuevo)){
  7.         $nuevo[] = $aux;
  8.         $i++;
  9.     }

¿Alguna forma de hacerlo?

Se agradece de antemano si alguien sabe de algo ^^
  #2 (permalink)  
Antiguo 05/07/2014, 20:59
Avatar de edgaralexanderfr  
Fecha de Ingreso: julio-2014
Ubicación: Caracas
Mensajes: 12
Antigüedad: 9 años, 9 meses
Puntos: 0
Respuesta: Obtener elementos de array con sub elementos sin repetirse

Código PHP:
<?php
  
  $tickets 
= array(
    array(
      
'uid' => 1
      
'ticket_code' => '0oreb8yo'
    
), 
    array(
      
'uid' => 1
      
'ticket_code' => '2oeii8hm'
    
), 
    array(
      
'uid' => 1
      
'ticket_code' => 'm0dwtjiw'
    
), 
    array(
      
'uid' => 1
      
'ticket_code' => 'q6c7cymb'
    
), 
    array(
      
'uid' => 1
      
'ticket_code' => 'zyqhm5bj'
    
), 
    array(
      
'uid' => 1
      
'ticket_code' => 'amdqzjpi'
    
), 
    array(
      
'uid' => 2
      
'ticket_code' => 'tzql7l42'
    
), 
    array(
      
'uid' => 2
      
'ticket_code' => 'gap0r6vf'
    
), 
    array(
      
'uid' => 2
      
'ticket_code' => 'ypqum5yz'
    
), 
    array(
      
'uid' => 4
      
'ticket_code' => 'smupluac'
    
), 
    array(
      
'uid' => 4
      
'ticket_code' => '9d8jsha7'
    
), 
    array(
      
'uid' => 5
      
'ticket_code' => '6hdnja42'
    
)
  );
  
  
$resultado = array();
  
$i 0;
  
  while (
$i 3) {
    
$ticket $ticketsrand(011) ];
    
$key 'uid_' $ticket['uid'];
    
    if (!isset(
$resultado$key ])) {
      
$resultado$key ] = $ticket;
      
$i++;
    }
  }
  
  
print_r($resultado);
  #3 (permalink)  
Antiguo 06/07/2014, 14:29
Avatar de rodrypaladin
Moderador
 
Fecha de Ingreso: abril-2010
Ubicación: Madrid
Mensajes: 2.127
Antigüedad: 14 años
Puntos: 468
Respuesta: Obtener elementos de array con sub elementos sin repetirse

Un ejemplo que tal vez te sirva:

Código PHP:
Ver original
  1. $numeros = array(1,2,3,4,5,6,7,8,9,10);
  2. shuffle($numeros);
  3. for($i=0;$i<=2;$i++) {
  4. echo $numeros[$i] . " "; }

Creamos el array, lo desordenamos y simplemente imprimimos los 3 primeros números, estos NUNCA pueden llegar a repetirse de esta manera.
__________________
No te olvides de dar +1 a quien te echa un cable ;)

Etiquetas: elementos
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 22:15.