2012-05-11 5 views
0

Я объявляю следующую функцию, чтобы получить случайное изображение из каталога. Я хочу использовать одну и ту же функцию в том же коде, чтобы получить случайное изображение из другого каталога. Теперь проблема заключается в том, что я должен изменить $ путь, но я уже использовал его в декларации в то время как я хочу использовать другой путь, когда я использую функцию 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; 
} 

Я использую его этот путь 1-й раз

$root = ''; 

$path = 'frames/'; 

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

$img = getRandomFromArray($imgList); 

Как shud я использую его 2-й раз, чтобы он выбирал изображение из другого каталога.

+2

Как вы вызвать функцию? Ошибка говорит о том, что вы на самом деле пытаетесь ее обновить, а не просто называть ее – billyonecan

+0

, которую хотите использовать или обновлять? Вы не вызываете функцию где-либо в коде выше. – itachi

+0

Вы можете * использовать * (вызывать) функцию столько раз, сколько хотите, но вы можете только * объявить * ее один раз. 'function some_func() {$ do = 'something'; } some_func(); some_func(); ' – DaveRandom

ответ

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); 
} 
+0

Я hv отредактировал его. PLS снова прочитал вопрос –

+0

тоже отредактировал :) –

+0

Я сделал то же самое. Но проблема заключается в том, чтобы снова использовать $ path, поэтому он принимает второе значение $ path, когда мне нужно первое значение. $ dest = imagecreatefromjpeg ("user.jpg"); $ src = imagecreatefromjpeg ("$ path $ img"); imagealphablending ($ dest, false); imagesavealpha ($ dest, true); –

Смежные вопросы