2010-12-18 23 views
22

Estoy tratando de crear un sitio donde los usuarios puedan enviar fotos, y luego ver al azar otras fotos una a una en otra página. Tengo un directorio llamado "cargas" donde se envían las imágenes. Tengo problemas para leer las imágenes del archivo. Solo quiero seleccionar aleatoriamente una imagen de las subidas de directorios y hacer que se muestre en la página. Cualquier sugerencia apreciada.Seleccionar el archivo aleatorio del directorio

Respuesta

54

Puede usar glob para obtener todos los archivos en un directorio, y luego tomar un elemento aleatorio de esa matriz. Una función como ésta lo haría por usted:

function random_pic($dir = 'uploads') 
{ 
    $files = glob($dir . '/*.*'); 
    $file = array_rand($files); 
    return $files[$file]; 
} 
6

me he vuelto un poco para conseguir más de un archivo al azar de un directorio mediante matriz.

<?php 

function random_pic($dir) 
{ 
$files = glob($dir . '/*.jpg'); 
$rand_keys = array_rand($files, 3); 
return array($files[$rand_keys[0]], $files[$rand_keys[1]], $files[$rand_keys[2]]); 
} 

// Calling function 

list($file_1,$file_2,$file_3)= random_pic("images"); 

?> 

También se puede utilizar para obtener valores de bucle.

+0

1 mejor que llamar random_pic() tres veces, ya que esto evita duplicados. (Mejor aún hacer que el 3 sea un parámetro opcional para random_pic().) –

0

O puede utilizar en lugar de opendir() glob() porque es más rápido

+1

Probablemente estés en lo correcto. Debe escribir una implementación que use el método opendir() y publicarlo en su respuesta. – Eric

Cuestiones relacionadas