Php,按日期升序对文件进行排序,标记为红色文本



Issue

如何在PHP中列出并按日期升序对文件进行排序,并标记前3行/文件(红色(?比如这样。

<div class="red">20191010-file.xlsx</div>
<div class="red">20191009-file.xlsx</div>
<div class="red">20191008-file.xlsx</div>
20191005-file.xlsx
20191004-file.xlsx
20191003-file.xlsx
20191002-file.xlsx
20191001-file.xlsx
...

我试过了

chdir($path);
array_multisort(array_map('filemtime', ($files = glob("*.xlsx"))), SORT_DESC, $files);
$reallyLastModified = reset($files);
foreach($files as $file){
$lastModified = date('F d Y, H:i:s',filemtime($file));
if($file == $reallyLastModified){
echo'
<tr>
<div id="p1" style="display: none;">LINK/'.$file.'</div>
<td class="file_new"><p style="color:red;">NEWEST FILE</p><a href="LINK/'.$file.'" target="_blank">'.$file.'</a>
<td class="file_new"><button class="button_delete" title="Smazat" type="submit" name="name" value="'.$file.'" onclick="return confirm('Opravdu chcete smazat '.$file.'?')"/></button></td>
</tr>
';
}
else{
echo'
<tr>
<div id="p1" style="display: none;">LINK/'.$file.'</div>
<td><a href="LINK/'.$file.'" target="_blank">'.$file.'</a>
<td><button class="button_delete" title="Smazat" type="submit" name="name" value="'.$file.'" onclick="return confirm('Opravdu chcete smazat '.$file.'?')"/></button></td>
</tr>
';
}
}
}

但这仅适用于 1 个文件。如何对前 3 个文件执行此操作?还是最简单的方法,例如通过scandir来做到这一点?

谢谢。

对于您的代码,您的数组已经按日期排序。您已经使用array_multisort对数组进行排序。您的"$files"数组从最新到最旧的修改日期排序。如果要使用"foreach"循环,则必须使用计数器来跟踪前 3 个元素。

但是,如果您将循环更改为"for"循环,则不必跟踪任何内容。你基本上有 2 个"for"循环。第一个打印前 3 个元素,而下一个打印其余元素。如果只有 1 个文件。该文件将突出显示为红色。如果超过 3 个文件,前 3 个文件将突出显示为红色,而其余文件则不会突出显示。

<?php
array_multisort(array_map('filemtime', ($files = glob("*.xlsx"))), SORT_DESC, $files);
$arrLength = count($files);
for ( $i = 0; $i < ($arrLength > 3? 3 : $arrLength); $i++ ){
echo'
<tr>
<div id="p1" style="display: none;">LINK/'.$files[$i].'</div>
<td class="file_new"><p style="color:red;">NEWEST FILE</p><a href="LINK/'.$files[$i].'" target="_blank">'.$files[$i].'</a>
<td class="file_new"><button class="button_delete" title="Smazat" type="submit" name="name" value="'.$files[$i].'" onclick="return confirm('Opravdu chcete smazat '.$files[$i].'?')"/></button></td>
</tr>
';  
}
for ( $i = 3; $i < $arrLength; $i++ ){
echo'
<tr>
<div id="p1" style="display: none;">LINK/'.$files[$i].'</div>
<td><a href="LINK/'.$files[$i].'" target="_blank">'.$files[$i].'</a>
<td><button class="button_delete" title="Smazat" type="submit" name="name" value="'.$files[$i].'" onclick="return confirm('Opravdu chcete smazat '.$files[$i].'?')"/></button></td>
</tr>
';
}

最新更新