Avatar billede phpbegynder2004 Nybegynder
31. marts 2006 - 16:29 Der er 8 kommentarer og
1 løsning

Array - få udskrevet $key

Hej,
Jeg har et script som henter alle filer fra en mappe, sorterer dem og lister dem. Med kommandoen $antal_billeder[10], får man udskrevet billede nummer 10 (godtbillede.jpg).
Jeg vil dog gerne have det omvendt, så jeg kan skrive billedenavnet og få nummeret ($key).
F.eks. $antal_billeder["godtbillede.jpg"] og få udskrevet 10.

Hvordan gør jeg det?

Min kode ser ud således:

$mappe="mappe-med-billeder";
function list_dir($mappe)
{
  if($mappe[strlen($mappe)-1]!='\\')
      $mappe.='\\';
  static $result_array=array();
  $handle=opendir($mappe);
  while ($file = readdir($handle)) {
if (preg_match("/(jp(e)?g|gif|bmp|png)$/i", $file)) { 
    if($file=='.'||$file=='..')
      continue;
    if(is_dir($mappe.$file))
      list_dir($mappe.$file.'\\');
    else
      $result_array[]=$mappe.$file;
    }
    } 
    closedir($handle);
    sort($result_array); 
    return $result_array; 
}

$antal_billeder = list_dir($mappe) ;

echo $antal_billeder[10];
?>
Avatar billede radion Nybegynder
31. marts 2006 - 17:14 #1
du kan bruge http://uk.php.net/manual/en/function.array-search.php

echo array_search("godtbillede.jpg",$antal_billeder);
Avatar billede hmortensen Nybegynder
31. marts 2006 - 17:14 #2
Så kan du bruge array_search() (http://se.php.net/array_search).
Avatar billede radion Nybegynder
31. marts 2006 - 17:15 #3
eller du kan bruge array_flip der vender dit array om, så dine værdier bliver til keys, og omvendt
Avatar billede phpbegynder2004 Nybegynder
01. april 2006 - 15:35 #4
Så hvordan laver jeg den mest funktionel? Altså, så den gør det hurtigst muligt og ved brug af færrest resourcer som muligt?
Avatar billede erikjacobsen Ekspert
01. april 2006 - 15:42 #5
Eller du kan tilføje denne linie

      $omvendt[$file]=count($result_array);
      $result_array[]=$mappe.$file;


Så kan du slå op med $omvendt['poulnyrupmedcykelhjelm.gif'] og få tallet 117 ud, hvis det er nummer 117.
Avatar billede radion Nybegynder
01. april 2006 - 16:08 #6
jeg vil tro at det er array_search der er mest økonomisk, uden at vide det :) det kan du jo evt. selv teste :) lad dem køre igennem 10000 gange og få taget tid på det :)
Avatar billede radion Nybegynder
01. april 2006 - 16:08 #7
men,,, jeg ville bruge array_search
Avatar billede phpbegynder2004 Nybegynder
25. april 2006 - 23:57 #8
Okay, mange tak. Jeg brugte radion's idé. Læg et svar!
Avatar billede radion Nybegynder
26. april 2006 - 11:49 #9
hephey :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester