---
title: "Random image (även från subfolders)"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/85766-random-image-även-från-subfolders"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Madmartigan"
published: "2003-09-11T12:11:52.000Z"
updated: "2006-09-24T18:59:12.000Z"
replies: 7
views: 521
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/85766-random-image-även-från-subfolders"
---

# Random image (även från subfolders)

## #1 — Madmartigan, 2003-09-11T12:11Z

Jag har ett php-script som visar en slumpvald bild ur en mapp.
Jag skulle behöva att den även kollade igenom underliggande mappar och visar en slumpvald bild från någon av dessa.
Alltså vilken fil som helst som ligger i mappen (eller undermappar till denna).

Vad behöver jag ändra för att det ska fungera?

\<?php
//read folder
$folder=opendir("030804/");
while ($file = readdir($folder))
$names\[count($names)\] = $file;
closedir($folder);
//sort file names in array
sort($names);
//remove any non-images from array
$tempvar=0;
for ($i=0;$names\[$i\];$i++){
$ext=strtolower(substr($names\[$i\],-4));
if ($ext==".jpg"){$names1\[$tempvar\]=$names\[$i\];$tempvar++;}
}
//random
srand ((double) microtime() \* 10000000);
$rand_keys = array_rand ($names1, 2);
//random image from array
$slika=$names1\[$rand_keys\[0\]\];
//image dimensions
$dimensions = GetImageSize($slika);
if (isset($pic)){header ("Location: $slika");}
else {echo "\<img src=\\"030804/$slika\\" $dimensions\[3\]\>";}
?\>

Tacksam för snabbt svar.

Permalänk: https://www.webforum.nu/p/85766

## #2 — Matte, 2003-09-11T13:28Z

Testa det här:

```php
function get_files($dir) {

   $names = array();

   if (substr($dir, -1) != '/') {
      $dir .= '/';
   }
   
   if ($folder = opendir($dir)) { 

      while (false !== ($file = readdir($folder))) { 

         if ($file != "." && $file != "..") { 

            if (is_dir($dir.$file)) {

               $names = array_merge($names, get_files($dir.$file));            

            } elseif (strtolower(substr($file,-4)) == '.jpg') {

               $names[] = $dir.$file;

            }

         } 

      } 

      closedir($folder); 

   }
   
   return $names;

}

$names = get_files('bilder');

function cmp($a, $b) {
   $a = substr($a, strrpos($a, '/'));
   $b = substr($b, strrpos($b, '/'));
   return ($a > $b) ? 1 : -1;
}

usort($names, 'cmp');

// Här kan du slumpa
```

 
Men jag förstår inte varför du ska sortera, när du ändå bara ska använda arrayen att slumpa från.

Permalänk: https://www.webforum.nu/p/1154894

## #3 — Madmartigan, 2003-09-11T13:42Z

Jag behöver inte sortera, det var bara med en sortering i koden jag hade. 
Jag testade din kod, men fick det inte att fungera.
Vart ska jag sätta in (definiera) mitt mapnamn?

Permalänk: https://www.webforum.nu/p/1154904

## #4 — Matte, 2003-09-11T13:51Z

```php
$names = get_files('030804/');
```

 

Ska du inte sortera så kan du ta bort följande rader:

```php
function cmp($a, $b) {
   $a = substr($a, strrpos($a, '/'));
   $b = substr($b, strrpos($b, '/'));
   return ($a > $b) ? 1 : -1;
}

usort($names, 'cmp');
```

Permalänk: https://www.webforum.nu/p/1154910

## #5 — Madmartigan, 2003-09-11T14:06Z

Ok, jag har testat den nya koden, men får det inte att fungera. Får inte ens en bruten bild. Ska jag använda något av min gamla kod också?
Kan du klistra in hela den koden jag ska ha, vore jag tacksam.

Permalänk: https://www.webforum.nu/p/1154916

## #6 — Matte, 2003-09-11T16:23Z

Använd funktionen get_files() så här:

```php
$names = get_files('030804/');

//random 
srand((float) microtime() * 10000000);
$rand_key = array_rand($names); 
//random image from array 
$slika = $names[$rand_key]; 

//image dimensions 
$dimensions = GetImageSize($slika); 

if (isset($pic)) {
   header("Location: $slika");
} 
else {
   echo "<img src=\"$slika\" $dimensions[3]>";
}
```

Permalänk: https://www.webforum.nu/p/1155015

## #7 — Caine, 2006-09-24T16:18Z

Jag har försöka använda koden på min dia men jag får den inte att fungera, mappen där bilderna ligger har sökvägen eld/eldbild från filen som ska visa dem.

Hoppas någon vänlig själ kan hjälpa mig med detta.

Permalänk: https://www.webforum.nu/p/1871272

## #8 — Matte, 2006-09-24T18:59Z

Kan du visa hur den kod du använde ser ut, samt på vilket sätt det blev fel för dig?

Permalänk: https://www.webforum.nu/p/1871320

---

Tråden på webben: https://www.webforum.nu/amne/php/85766-random-image-även-från-subfolders
