如何显示每个文件夹的第一个图像

时间:2018-04-14 22:49:11

标签: php

我搜索了Stack Overflow,只有以下代码才能正确显示文件夹的图像(我已尝试过)。有两个问题:

  1. 前两个文件夹的...,因此if (($h == -1) && ($h == 0))代码。

  2. 它不会显示第二个文件夹的第一张图片,而是显示变量$h中的图片。出于某种原因,变量$h在完成foreach循环时似乎不会重置为-1。相反,我认为正在显示第一个数组中的图像,因此输出为:

  3. Album_1,该文件夹中的第一张图片, Album_2,来自Album_1文件夹的第一张图片。

    $dirs = array_filter(glob('*'), 'is_dir');
    
    foreach($dirs as $dirk) {
        $h = -1;
        //echo 'hey'.$dirk.'heya';
        $dir = $dirk;
        $dh = opendir($dir);
        while (false !== ($filename = readdir($dh))) {
            $files[] = $filename;
        }
    
        $images = preg_grep ('/\.jpg$/i', $files);
    
        echo '<div class="div_class">';
        foreach($files as $image) {
            if (($h == -1) && ($h == 0)) {
                echo '';
            }
    
            if ($h == 1) {
                echo '
                        <input type="checkbox" id="'.$image.'" name="album" 
                         value="'.$image.'" class="checkbox_class"/>
                        <label for="'.$image.'" class="label_class">
                            <div class="div_inside_label">
                                <span>'.$dirk.'</span>
                                <br>
                                <span>'.$h.'</span>
                            </div>
                        </label>
                        <img class="table_images"
                         src="http://localhost/refit/code/'.$dir.'/
                         '.$image.'"/>
                    ';
            }   
            else {
                echo '';
            }
    
            $h++;
        }
    
        echo '</div>';
        echo $h;    
    }   
    

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

# Nothing really different here
$dirs = array_filter(glob('*'), 'is_dir');
echo '<div class="div_class">';
foreach($dirs as $dirk) {
    # Glob the folder for a jpg
    foreach(glob($dirk.'/*.jpg') as $image) {
        echo '
            <input type="checkbox" id="'.$image.'" name="album" value="'.$image.'" class="checkbox_class"/>
            <label for="'.$image.'" class="label_class">
                <div class="div_inside_label">
                    <span>'.$dirk.'</span>
                </div>
            </label>
            <!-- Here you will probably need to fix the path -->
            <img class="table_images" src="'.$image.'" />
        ';
        # Stop in this folder
        break;
    }
}
echo '</div>';