2014-02-21 3 views
0

Я сделал функцию для подсчета количества изображений в папке, также я хотел бы печатать изображения в массиве. Это рабочий фрагмент для подсчета.кол-во изображений в папке и именах изображений изображений

<?php 
function countNum($dir){ 
$i = 0; 
$dir_array = scandir($dir); 
    foreach($dir_array as $key=>$value){ 
    if($value!=".." && $value!="."){ 
    if(is_file($dir."/".$value)){ 

     $i++; 
    } 
    } 
} 
return array($i); 
} 

$num = countNum("images"); 
echo $num[0]; 
?> 

echo $ value; Я получаю все имена файлов изображений

AAA_1.jpg AAA_2.jpg AAA_3.jpg AAA_4.jpg BBB_1.jpg BBB_2.jpg BBB_3.jpg BBB_4.jpg 

Как вернуть их в виде массива?

+0

ли папка гарантированно только иметь файлы .jpg в этом? Или нужно учитывать другие файлы? – ChicagoRedSox

+0

@ChicagoRedSox может содержать некоторые изображения в формате png, но только png и jpg – olo

+0

OK Я имел в виду, что вы просто прямо подсчитываете файлы. Может ли быть, скажем, текстовый файл, который нужно игнорировать? – ChicagoRedSox

ответ

2

Попробуйте это:

function getFiles($dir){ 
    $files = array(); 
    $dir_array = scandir($dir); 
    foreach($dir_array as $key=>$value) { 
     if($value!=".." && $value!=".") { 
      if(is_file($dir."/".$value)) { 
       $files[]=$value; 
      } 
      } 
    } 
    return $files; 
} 

$all_files = getFiles("images"); 
$num = count($all_files); 
echo "Count: $num\n"; 
echo $all_files[0]; 
+0

print_r ($ all_files); : D спасибо – olo

0

Просто создайте пустой массив и поместите элемент в этот массив в вашем цикле forach.

Отрывок прилагается:

$array = array(); 
foreach ($files as $file) { 
    $array[] = $file; 
} 

В качестве альтернативы, вы можете использовать array_push() функцию, которая does ту же самую работу.

1

Если вы действительно пытаетесь только файлы занимают изображения, где могут быть другие:

function getImages($dir) { 
    //make a list of extensions 
    $extensions = [ 
    'jpg', 
    'png', 
    'gif', 
    //......other image extensions 
    ]; 
    return array_filter(scandir($dir), function ($val) use ($extensions) { 
    //get extension from file 
    $ext = pathinfo("$dir/$val")['extension']; 
    //only include file if extension matches list 
    return in_array($ext, $extensions); 
    }); 
} 
$files = getImages("images"); 
//now show what's in there 
print_r($files); 
echo count($files); 
Смежные вопросы