0

我声明了以下函数来从目录中获取随机图像。我想在相同的代码中使用相同的函数从不同的目录中获取随机图像。现在的问题是我必须更改 $path 但我已经在声明中使用了它,而我想在第二次使用该函数时使用不同的路径

声明部分

function getImagesFromDir($path) { 
$images = array(); 
if ( $img_dir = @opendir($path) ) { 
    while ( false !== ($img_file = readdir($img_dir)) ) { 
        // checks for gif, jpg, png 
        if ( preg_match("/(\.gif|\.jpg|\.png)$/", $img_file) ) { 
            $images[] = $img_file; 
        } 
    } 
    closedir($img_dir); 
} 
return $images; 
} 

我第一次用这种方式

$root = ''; 

$path = 'frames/';

$imgList = getImagesFromDir($root . $path); 

$img = getRandomFromArray($imgList); 

我如何第二次使用它,以便它从不同的目录中选择图像。

4

1 回答 1

1

可能您不会两次调用该函数,而是两次声明它。

宣言:

function getImagesFromDir($path) { 
$images = array(); 
if ( $img_dir = @opendir($path) ) { 
    while ( false !== ($img_file = readdir($img_dir)) ) { 
        // checks for gif, jpg, png 
        if ( preg_match("/(\.gif|\.jpg|\.png)$/", $img_file) ) { 
            $images[] = $img_file; 
        } 
    } 
    closedir($img_dir); 
} 
return $images; 
} 

调用:

$images1 = getImagesFromDir("/var/www/images1");
$images2 = getImagesFromDir("/var/www/images2");

如果你写

function getImagesFromDir($path) ....

再次在任何地方重新声明并且 PHP 不支持这个

如果您多次需要声明函数的文件,也会发生这种情况。

- 编辑 - -

$strRoot = '';

$astrImages = array();

$astrImages[] = array( 'path' => 'frames/', 'image' => '' );
$astrImages[] = array( 'path' => 'etc1/', 'image' => '' );
$astrImages[] = array( 'path' => 'etc2/', 'image' => '' );
$astrImages[] = array( 'path' => 'etc3/', 'image' => '' );


foreach( $astrImages as $nIndex => $astrImage )
{
  $imgList = getImagesFromDir($strRoot . $astrImage['path']); 

  $astrImages[$nIndex]['image'] = getRandomFromArray($imgList); 
}
于 2012-05-11T12:00:06.307 回答