显示来自多个目录的文件,这些目录都有不同的文件名,并显示在表PHP中

时间:2019-02-26 18:20:28

标签: php html

我正在尝试在3个单独的目录中显示文件列表。如果每个文件夹中的所有文件名都相同,则可以正常工作。但是,如果第一个文件夹中的文件名不同,则其他两个文件夹中不显示图像。因此,所有文件名都必须相同,但我需要它,因此文件名是否相同并不重要。

这是我到目前为止所拥有的。

<?php
date_default_timezone_set('Europe/London');
$dirname = "dir1";
$dirnameTwo = "dir2";
$dirnameThree = "dir3";
?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>

<head>
    <meta http-equiv='refresh' content='10'>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <meta http-equiv='cache-control' content='max-age=0' />
    <meta http-equiv='cache-control' content='no-cache' />
    <meta http-equiv='expires' content='0' />
    <meta http-equiv='expires' content='Tue, 01 Jan 1980 1:00:00 GMT' />
    <meta http-equiv='pragma' content='no-cache' />
</head>
<html>

<body>
<style type="text/css">
    .pi-title {
        padding: 1rem;
    }
</style>
<div class="container">
    <div class="row">
        <div class="pi-title">
            <h3>Test</h3>
        </div>
        <div class="table-container col-md-12">
            <table class="table" border='1' cellpadding='5' cellspacing='0' bordercolor='#ccc'>
                <thead class="thead-dark">
                <tr>
                    <th scope="col">ID</th>
                    <th scope="col">File Name</th>
                    <th scope="col">PI 1</th>
                    <th scope="col">PI 2</th>
                    <th scope="col">PI 3</th>
                </tr>
                </thead>
                <tbody>
                <tr></tr>
                <tr>
                    <?php
                    array_multisort(array_map('filemtime', ($files = glob("*.*"))), SORT_DESC, $files);
                    $directories = implode(',', [ $dirname, $dirnameTwo, $dirnameThree]);
                    $files = glob("./{{$directories}}/*", GLOB_BRACE);
                    $i = 1;
                    foreach($files as $filename) {
                      if (file_exists($filename)) {
                            echo "</tr>";
                            echo "<td><font face='Arial' size='6'>$i</font></td>";
                            echo "<td><font face='Arial' size='6' color='red'>" . date ("F d Y H:i", filemtime($filename));
                            echo "</font></td>";
                        }
                        print("

                           <td><img src='$filename' height='180' width='220'></td>
                           <td><img src='$filename' height='180' width='220'></td>
                           <td><img src='$filename' height='180' width='220'></td>

                           ");
                        $i++;
                        if($i==13) break;
                    }
                    ?>
                </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>

1 个答案:

答案 0 :(得分:0)

您可以使用GLOB_BRACE标志:

$directories = implode(',', [ $dirname, $dirnameTwo, $dirnameThree]);
$files = glob("./{{$directories}}/*", GLOB_BRACE);

glob('{dir1,dir2}/*', GLOB_BRACE)为您提供两个文件夹dir1dir2中所有文件的列表。在字符串插值中,变量周围的花括号具有特殊含义,因此您需要双括号,从而在插值后导致单括号。