【发布时间】:2018-08-16 04:55:25
【问题描述】:
我使用一些 Smarty 代码从文件夹中收集文件:
{assign var=files value="uploads/Documenten/GPS-Tracks/*.html"|glob}
{if count($files)}
<ul>
{foreach from=$files item='file'}
{assign var='gpstrack_location' value="{$file|cms_escape:'urlpathinfo'}"}
{if !$file|contains:"index"}
<li><a href="{$file}">{$file|basename|substr:0:-5}</a></li>
{/if}
{/foreach}
</ul>
{/if}
这给了我一个基于第一个字符的排序列表。
- Brighton-Gosport_2108
- 布莱顿-小汉普顿_2012
- 布莱顿-朴特茅斯-布莱顿_2018
- Bruinisse-Herkingen_2012
- BurnhamonCrouch_Vlissingen_22aug13
- Calais-Dieppe_2014
- Carteret-Dielette_2012
- 瑟堡-StVaast_2012
- Clubwedstrijd_17sept11
- Clubwedstrijd_18sep10
- Clubwedstrijd_21sep13
- Cowes-BeauLieu_River_2012
- 达特茅斯-根西岛_2012
- 多维尔-翁弗勒尔_2012
- 丹麦_2008
- Dielette-Alderney_2012
- 迪耶普-布洛涅_2012
我想要实现的是基于最后两个字符的排序列表。 Smarty 或 PHP 中有没有办法做到这一点?
提前感谢您的帮助!
更新: 我让自己更进一步:) 还有一个我无法解决的警告: 到目前为止的代码:
<?php
$folder = '<some foldername>';
$files = array_values(preg_grep('/^([^.])/', scandir($folder, SCANDIR_SORT_ASCENDING)));
//$files = scandir($folder);
//print_r($files);
usort(var_dump($files, function ($a, $b){
if ($a || $b <> "")
return substr($b, strlen($b) - 2) - substr($a, strlen($a) - 2);
}));
?>
我收到的警告,并想用“或”语句解决:
[
- 121] => string(29) "Weymouth-Lyme_Reges_2012.html"
- [122]=> string(24) "Yarmouth-Poole_2012.html" }
- object(Closure)#1036 (1) {["parameter"]=> array(2) { ["$a"]=> string(10) "" ["$b"]=> string(10 ) "" } } 警告:usort() 需要 2 个参数,1 个在 /Users/name/Sites/install/assets/udt/sort-on-last-characters.php 第 55 行给出
谁能让我更进一步?
【问题讨论】:
-
谢谢阿克谢。我也找到了该示例/答案,但是这是用 Python 编写的,并且我没有设法将 Python 脚本“转换”为 Smarty。为此我开了这个话题。
-
@user2037412 该问题现已重新打开。请将您的答案作为答案发布,而不是作为对问题的编辑(即使它已被关闭)。我已经回滚了那个编辑 - 你仍然可以访问它here