在发布此之前,我已经做了相当多的研究,现在我需要朝着正确的方向努力。我有一个ip camera文件名列表。文件名是我需要排序的时间戳。我无法弄清楚如何对字符串名称上的日期进行排序。我想我需要将字符串转换为函数strtotime()
的可读格式?或者有没有改变字符串的方法?我不知道如何正确处理这个问题。
我试过array_multisort($array, SORT_DESC, SORT_NUMERIC);
没有运气。
$array = Array ( 'SNAP_CH04_2016_05_15_18_11_05_62777.jpg', 'SNAP_CH01_2016_05_15_18_05_38_63588.jpg', 'SNAP_CH02_2016_05_15_18_05_13_38387.jpg', 'SNAP_CH04_2016_05_15_15_55_28_52502.jpg', 'SNAP_CH04_2016_05_15_14_52_46_26039.jpg', 'SNAP_CH03_2016_05_15_14_52_39_18421.jpg', 'SNAP_CH04_2016_05_15_14_51_34_19005.jpg', 'SNAP_CH02_2016_05_15_14_51_25_9874.jpg', 'SNAP_CH04_2016_05_15_06_12_49_23707.jpg', 'SNAP_CH04_2016_05_15_05_03_09_38176.jpg', 'SNAP_CH04_2016_05_15_03_33_27_29791.jpg', 'SNAP_CH03_2016_05_15_01_59_29_27941.jpg' );
任何建议表示赞赏。试着学习。
答案 0 :(得分:2)
您可以使用usort
函数来定义自定义函数来比较字符串。以下是它的工作原理:
<?php
function timestamp_cmp($a, $b) {
$first = substr($a, 10);
$second = substr($b, 10);
return strnatcmp($first, $second);
}
$array = Array (
'SNAP_CH04_2016_05_15_18_11_05_62777.jpg',
'SNAP_CH01_2016_05_15_18_05_38_63588.jpg',
'SNAP_CH02_2016_05_15_18_05_13_38387.jpg',
'SNAP_CH04_2016_05_15_15_55_28_52502.jpg',
'SNAP_CH04_2016_05_15_14_52_46_26039.jpg',
'SNAP_CH03_2016_05_15_14_52_39_18421.jpg',
'SNAP_CH04_2016_05_15_14_51_34_19005.jpg',
'SNAP_CH02_2016_05_15_14_51_25_9874.jpg',
'SNAP_CH04_2016_05_15_06_12_49_23707.jpg',
'SNAP_CH04_2016_05_15_05_03_09_38176.jpg',
'SNAP_CH04_2016_05_15_03_33_27_29791.jpg',
'SNAP_CH03_2016_05_15_01_59_29_27941.jpg'
);
usort($array,'timestamp_cmp');
注意:如果您使用的是PHP 5.3+,则可以执行以下操作:
usort($array,function($a, $b) {
$first = substr($a, 10);
$second = substr($b, 10);
return strnatcmp($first, $second);
});
答案 1 :(得分:1)
只要你可以对名称中包含的“SNAP_CH_04”部分进行排序,就可以使用Animal.makeNoise();
对数组进行排序而不进行任何转换。
sort()
如果您需要删除该部分,可以使用sort($array);
然后使用substr
,如下所示:
sort()