Ver Mensaje Individual
  #18 (permalink)  
Antiguo 03/11/2003, 09:32
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Yo el problema que le veo a sufle (esto es un plato, ¿verdad?) es que te desordena el array original, dejandolo "inservible" si lo necesitas en el formato original.

Y el array_rand() no es mas que coger los n primeros elementos del shuffle(array_keys($array)), pero supongo que optimizado en codigo C. Ademas, creo que no se puede poner como lo he puesto (sufle modifica el array, y como el array no esta en una variable, no podria acceder a ella). Seria mas bien:
Código PHP:
$claves=array_keys($array);
shuffle($claves);
$aleatorio=$array[$claves[0]];

// o si queremos mas aleatoriedad, podemos elegir el indice de $claves aleatoriamente

$id_clave=rand(0,count($claves)); 
$aleatorio_2=$array[$claves[$id_clave]]; 
Y ahora que miro el manual, le veo otro fallo a sufle:
Código PHP:
<?php
          $fruits 
= Array(
   
"apples" => "juicy",
   
"lemons" => "sour",
   
"tangerines" => "sweet");
shuffle($fruits);
print_r($fruits);
?>
Mirad que le hace al pobre array asociativo

Asi que sabiendo los pros y los contras, es solo cuestion de elegir.

Saludos.

PD: Esto es lo que me gusta de la programacion. Preguntas por una solucion a 10 programadores y obtienes 93.45 soluciones totalmente validas.
__________________
Josemi

Aprendiz de mucho, maestro de poco.