第二次使用相同的功能

时间:2012-05-11 11:55:08

标签: php image

我正在声明以下函数从目录中获取随机图像。我想在相同的代码中使用相同的函数从不同的目录中获取随机图像。现在问题是我必须更改$ 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); 

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

1 个答案:

答案 0 :(得分: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); 
}