Php,按日期升序排序文件,标记为红色文本
问题 如何在PHP中按日期升序列出和排序文件,并标记前3行/文件(红色)?比如像这样Php,按日期升序排序文件,标记为红色文本,php,file,sorting,Php,File,Sorting,问题 如何在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 2019100
<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
...
20191010-file.xlsx
20191009-file.xlsx
20191008-file.xlsx
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>
';
}
}
}
chdir($path);
数组\多排序(数组\映射('filemtime',($files=glob(*.xlsx))、排序\说明,$files);
$reallyllastmodified=reset($files);
foreach($files作为$file){
$lastModified=date('FDY,H:i:s',filemtime($file));
如果($file==$reallyllastModified){
回声'
链接/'.$file'
最新文件
';
}
否则{
回声'
链接/'.$file'
';
}
}
}
但这仅适用于1个文件。如何为前3个文件执行此操作?或者是最简单的方法,例如通过scandir
来实现这一点
谢谢。对于您的代码,您的数组已按日期排序。您已经使用array_multisort对数组进行排序。您的“$files”数组按最新修改日期到最早修改日期排序。如果要使用“foreach”循环,则必须使用计数器来跟踪前3个元素 但是,如果您将循环更改为“for”循环,则不必跟踪任何内容。基本上有2个“for”循环。第一个打印前3个元素,而下一个打印其余元素。如果只有一个文件。该文件将以红色突出显示。如果有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>
';
}
对于您的代码,您的数组已按日期排序。您已经使用array_multisort对数组进行排序。您的“$files”数组按最新修改日期到最早修改日期排序。如果要使用“foreach”循环,则必须使用计数器来跟踪前3个元素
但是,如果您将循环更改为“for”循环,则不必跟踪任何内容。基本上有2个“for”循环。第一个打印前3个元素,而下一个打印其余元素。如果只有一个文件。该文件将以红色突出显示。如果有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>
';
}
如果文件数少于4个,那么这不会中断吗?我会在循环外设置一个count变量,在count no上,它不会中断。如果文件少于4个,则不会执行第二个循环。对于第二个循环,$i从3开始,因此如果$i不小于数组的索引量,则不会执行该循环。但是如果只有2个文件,则会有一个额外的循环。感谢您指出这一点。很抱歉。我真不敢相信我错过了。因此,对于第一个循环,如果数组的长度小于等于3,则将$i与数组的长度进行比较。否则,将$i与3进行比较。如果少于4个文件,该值不会中断吗?我会在循环外设置一个count变量,在count no上,它不会中断。如果文件少于4个,则不会执行第二个循环。对于第二个循环,$i从3开始,因此如果$i不小于数组的索引量,则不会执行该循环。但是如果只有2个文件,则会有一个额外的循环。感谢您指出这一点。很抱歉。我真不敢相信我错过了。因此,对于第一个循环,如果数组的长度小于等于3,则将$i与数组的长度进行比较。否则,你将$i与3进行比较。