Obtener valores aleatorios de un array con php

En mi lento aprendizaje de php hoy me surgió un problema: necesito obtener un valor aleatorio utilizando php de una variable gestionada con un array.

Me encontré con la función rand() de php con la cual pude resolver el problema y luego conocí array_rand() que creo que es mucho mejor para mi cuestión sobre obtener un valor aleatorio de un array.

Usando rand() para obtener un valor aleatorio de un array

<?php

  $mi_array = array("Paco","Pepe","Ana","Carmen","85","452");

  $max = count($mi_array)-1;

  $numaleatorio = rand(0,$max);

  echo "valor aleatorio del array: ".$mi_array[$numaleatorio];

?>

La función rand() de php devuelve un número aleatorio comprendido, en este caso, entre 0 y $max, y la he usado en este ejemplo para obtener un valor aleatorio del índice del array, así, al tener una posición aleatoria del índice puedo obtener un valor aleatorio del array con $mi_array[$numaleatorio].

Usando array_rand() para obtener el valor aletaorio de un array

Visto la función rand() me encontré con array_rand() que hace justamente lo que quiero sin necesidad de dar rodeos.

array_rand() necesita especificar el array de entrada y el número de entradas a elegir, si se pone 1 devuelve un valor aleatorio del índice del array, si se pone más de 1 devuelve un array con valores escogidos aleatoriamente del índice del array original. Si se pone un número de entradas a elegir mayor al número de entradas del array original nos dará error.

Es interesante utilizar la función shuffle() para desordenar el array antes de utilizar array_rand().

Por tanto así puede quedar una función para elegir un valor de un array de forma aleatoria:

<?php

  $mi_array = array("Paco","Pepe","Ana","Carmen","85","452");

  shuffle($mi_array);

  $random = array_rand($mi_array,1);

  echo "valor aleatorio del array: ".$mi_array[$random];

?>

Vea también Elegir un valor aleatorio de un array de forma ponderada con php.


Cerrar


Comentarios (4)

Community Builder Avatar
Donald.77
(10.02.2012 (18:07:38))
Consulta sobre tablas Sí No Estimado Cybnet:
tengo en pantalla unas 15 tablas con diferentes categorias de productos, las cuales se abren para mostrar las diferentes marcas. Debo permitir seleccionar o no una marca para copiarla en un campo que me servirá para buscar en una tabla sql. Muestro las tablas, el usuario puede seleccionar la marca que desea, pero no se como hacer para que esa marca se copie en el campo que se usa para buscar. Me puedes ayudar?
Community Builder Avatar
cybnet
(26.05.2011 (22:59:01))
Sí No @Kompañero, no conozco nada TOMCAT y casi nada de Java (Sun Microsystems) que es para lo que se hizo TOMCAT. No obstante debe decirte que puedes usar PHP con TOMCAT. Aquí encontré un tutorial de como hacerlo http://wiki.apache.org/tomcat/UsingPhp, aunque según dicho tutorial solo vale para PHP version 4 y no para la versión 5.
Community Builder Avatar
Kompañero
(26.05.2011 (22:57:38))
Sí No Jeje los que sepan de esto se van a reír, no me funcionaba por que estaba intentando correrlo con tomcat y me acaban de decir que tomcat no interpreta PHP xD.

Bueno gracias por el tuto, saludos a todos y recuerden: TOMCAT NO INTERPRETA PHP. =
Community Builder Avatar
Kompañero
(26.05.2011 (22:56:35))
Sí No Una pregunta: ¿Debo modificar algo al código del array_rand para que funcione?
Lo copie y pegue exactamente igual y no me muestra nada, ¿donde debo ponerlo? disculpa mi ignorancia pero soy nuevo en PHP

Smileys

:confused::cool::cry::laugh::lol::normal::blush::rolleyes::sad::shocked::sick::sleeping::smile::surprised::tongue::unsure::whistle::wink: