0
篇帖子
最近某基佬在弄一个OneDrive+OneIndex的网盘程序,发现从OneDrive获取下来的文件并没有按照创建时间的排序,后续进行了调整,利用PHP的数组排序函数array_multisort()
把需要排序的数组放进去,然后用SORT_DESC
进行降序排序即可。以下代码例子;代码文件在:/home/wwwroot/default/view/nexmoe/list.php;nexmoe为当前使用的模板文件文件夹。
<ul class="mdui-list">
<li class="mdui-list-item th">
<div class="mdui-col-xs-12 mdui-col-sm-7">文件 <i class="mdui-icon material-icons icon-sort" data-sort="name" data-order="downward">expand_more</i></div>
<div class="mdui-col-sm-3 mdui-text-right">修改时间 <i class="mdui-icon material-icons icon-sort" data-sort="date" data-order="downward">expand_more</i></div>
<div class="mdui-col-sm-2 mdui-text-right">大小 <i class="mdui-icon material-icons icon-sort" data-sort="size" data-order="downward">expand_more</i></div>
</li>
<?php if($path != '/'):?>
<li class="mdui-list-item mdui-ripple">
<a href="<?php echo get_absolute_path($root.$path.'../');?>">
<div class="mdui-col-xs-12 mdui-col-sm-7">
<i class="mdui-icon material-icons">arrow_upward</i>
..
</div>
<div class="mdui-col-sm-3 mdui-text-right"></div>
<div class="mdui-col-sm-2 mdui-text-right"></div>
</a>
</li>
<?php endif;?>
<?php
$ctime_str = array();
foreach((array)$items as $key=>$v){
(array)$items[$key]['ctime_str'] = $v['lastModifiedDateTime'];
$ctime_str[] = (array)$items[$key]['ctime_str']+$v;
}
array_multisort($ctime_str,SORT_DESC);
/**
主要是修改了这个位置的代码,把排序好的数组重新用foreach进行一次遍历即可;
**/
?>
<?php foreach($ctime_str as $item):?>
<?php if(!empty($item['folder'])):?>
<li class="mdui-list-item mdui-ripple">
<a href="<?php echo get_absolute_path($root.$path.rawurlencode($item['name']));?>">
<div class="mdui-col-xs-12 mdui-col-sm-7 mdui-text-truncate">
<i class="mdui-icon material-icons">folder_open</i>
<span><?php e($item['name']);?></span>
</div>
<div class="mdui-col-sm-3 mdui-text-right"><?php echo date("Y-m-d H:i:s", $item['lastModifiedDateTime']);?></div>
<div class="mdui-col-sm-2 mdui-text-right"><?php echo onedrive::human_filesize($item['size']);?></div>
</a>
</li>
<?php else:?>
<li class="mdui-list-item file mdui-ripple">
<a href="<?php echo get_absolute_path($root.$path).rawurlencode($item['name']);?>" target="_blank">
<div class="mdui-col-xs-12 mdui-col-sm-7 mdui-text-truncate">
<i class="mdui-icon material-icons"><?php echo file_ico($item);?></i>
<span><?php e($item['name']);?></span>
</div>
<div class="mdui-col-sm-3 mdui-text-right"><?php echo date("Y-m-d H:i:s", $item['lastModifiedDateTime']);?></div>
<div class="mdui-col-sm-2 mdui-text-right"><?php echo onedrive::human_filesize($item['size']);?></div>
</a>
</li>
<?php endif;?>
<?php endforeach;?>
</ul>
array_multisort()
函数对多个数组或多维数组进行排序。
参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。
第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:
SORT_ASC - 默认,按升序排列。(A-Z) SORT_DESC - 按降序排列。(Z-A) 随后可以指定排序的类型:
SORT_REGULAR - 默认。将每一项按常规顺序排列。 SORT_NUMERIC - 将每一项按数字顺序排列。 SORT_STRING - 将每一项按字母顺序排列。
本博客内所有原创和翻译的文章的版权归本人所有,允许第三方转载,但转载时请务必保留作者名,并注明出处链接,否则本人将保留追究其法律责任的权利。
「人生在世,留句话给我吧」