0

ディレクトリからランダムな画像を取得する次の関数を宣言しています。同じコードで同じ関数を使用して、別のディレクトリからランダムな画像を取得したいと考えています。今問題は、 $path を変更する必要があることですが、関数を2回目に使用するときに別のパスを使用したいのに、宣言で既に使用しています

宣言部分

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; 
} 

1回目はこんな感じで使ってます

$root = ''; 

$path = 'frames/';

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

$img = getRandomFromArray($imgList); 

別のディレクトリから画像を選択するように、2回目に使用するのはどうですか。

4

1 に答える 1

1

おそらく、関数を 2 回呼び出すのではなく、2 回宣言します。

宣言:

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 に答える