首页 > 解决方案 > 如何在PHP中对数组中返回的项目进行分组

问题描述

我需要列出目录中的所有 PDF 文件并链接到它们。我这样做:

//get the list and sort it
<?php
    $dirpath = "Files/PDFs/";
    $files = array();
    $files = glob($dirpath . "*");
    // sort files by last modified date
    usort($files, function($x, $y) {
        return filemtime($x) < filemtime($y);
    }); 
?>
//display them like this
<ul>
    <?php
        foreach($files as $item){
            echo "<li><a href='$item'>" . basename($item) . " Updated On " . @date('F d, Y, H:i:s', filemtime($item)) . "</a></li>";
    } ?>
</ul>

这给了我这样的东西:

<li><a href="/pat/to/pdf">File.pdf Updated On August 13, 2021, 16:43:49</a></li>

这是我需要的一部分。

我想为“左、中、右”的每个项目添加一个类,这样我就可以将它们分配给一个 CSS 网格列。因此,如果返回 10 件商品:

Left            Mid            Right
1               2               3
4               5               6
7               8               9
10

有没有更好的方法让这些布局在网格列或表格中?

标签: php

解决方案


这是您想要的直接答案:

<?php
foreach($files as $index => $item){
     echo "<li class='". ($index % 3 == 0 ? "left-class" : ($index % 3 == 1 ? "middle-class" : "right-class")) ."'>
          <a href='$item'>" . basename($item) . " Updated On " . @date('F d, Y, H:i:s', filemtime($item)) . "</a>
     </li>";
} 
?>

但是使用弹性盒子或网格系统有更好的方法。看看这个

然后你可以做这样的事情:

<div class="row">
    <?php
        foreach($files as $item){
            echo "<div class='col-4'><a href='$item'>" . basename($item) . " Updated On " . @date('F d, Y, H:i:s', filemtime($item)) . "</a></div>";
    } ?>
</div >

推荐阅读