我对PHP非常陌生,但作为一个开始,我已根据时间制作了一个文件删除/列表。如果您访问该页面,并且服务器找到的文件大于约。 10天后,它会删除该文件。否则,它将显示该文件。我想要做的是对时间后显示的文件进行排序,因此最新的文件排在第一位。我尝试了各种不同的方法+在这里搜索过,但是找不到适用于此的东西。我直接申请了
arsort($ DIR)
但由于它是一个对象,它不会让我。无法真正将其视为对每个项目进行排序的好方法。
function fileDelete(){
$dir = new DirectoryIterator(dirname(__FILE__));
$now = time();
$j = 0;
foreach($dir as $fileinfo){
if($fileinfo->getExtension() == "png"){
if($now - filemtime($fileinfo) >= (60 * 60 * 24 * 10)){
unlink($fileinfo);
echo $fileinfo . " deleted " . "<br>";
$j++;
} else {
$data = getImageSize($fileinfo);
$width = $data[0];
$height = $data[1];
?>
<a href="../<?php echo $fileinfo ?>"><img src="<?php echo $fileinfo ?>" width="<?php echo ($width/2) ?>" height="<?php echo ($height/2) ?>"></a>
<?php }
}
}
if($j == 0){
return "No files deleted";
} else {
return "<br>" . $j . " files deleted. <br>";
}
}
这是我的代码。我也尝试将array_push()转换为另一个数组并对其进行排序,但出于某种原因,它并没有起作用。我希望有人可以给我最好的练习,如果你发现任何,我很抱歉。我没有。
答案 0 :(得分:0)
我确实解决了自己的问题: 我将代码分成两个foreach循环。在第一个中进行所有检查,删除文件,然后在下一个foreach循环中显示该文件。 完全回答:我正在寻找$ fil [0]。
function fileDelete(){
$dir = new DirectoryIterator(dirname(__FILE__));
$now = time();
$j = 0;
$filer = array();
foreach($dir as $fileinfo){
if($fileinfo->getExtension() == "png"){
if($now - filemtime($fileinfo) >= (60 * 60 * 24 * 10)){
unlink($fileinfo);
echo $fileinfo . " deleted " . "<br>";
$j++;
} else {
$filer[$fileinfo->getMTime()][] = $fileinfo->getFilename();
}
}
}
arsort($filer);
foreach($filer as $fil){
$data = getImageSize($fil[0]);
$width = $data[0];
$height = $data[1];
?>
<a href="../<?php echo $fil[0] ?>"><img src="<?php echo $fil[0] ?>" width="<?php echo ($width/2) ?>" height="<?php echo ($height/2) ?>"></a>
<?php }
if($j == 0){
return "No files deleted";
} else {
return "<br>" . $j . " files deleted. <br>";
}
}