我有一个包含files =>文件名的数组,如下所示:
$provider1 = ('dnnbzdas04.txt','haethae09.txt','dhsdshnsd05.txt',...,'zdbtebt03.txt');
与右移文件类似,文本文件末尾有“序列”值,
文件确实有未知的文件名但是'序列'总是设置,我需要重新排序数组,结果是:
$provider1Ordered = ('hst45ga01.txt','dfa454ba02.txt','zdbtebt03.txt',...,'haethae09.txt');
我要做的是使用sub_str()除去最后6个字符以外的所有字符并使用它来排序数组。
将新的6个字符有序数组与前一个'rawdata'数组结合并以相同方式排序的最佳方法是什么?
请指点,帮助或任何我会非常感激。
一切顺利,
吉姆
答案 0 :(得分:2)
您可以使用usort
执行此操作。例如
$provider1 = array('dnnbzdas04.txt','haethae09.txt','dhsdshnsd05.txt','zdbtebt03.txt');
usort($provider1, function($a, $b) {
$a = substr($a, -6, 2);
$b = substr($b, -6, 2);
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
});
print_r($provider1);
这将输出:
Array
(
[0] => zdbtebt03.txt
[1] => dnnbzdas04.txt
[2] => dhsdshnsd05.txt
[3] => haethae09.txt
)
答案 1 :(得分:0)
我会做的是基于你最初的想法:
使用已知的sorting algorithm,但不是比较数组单元格的整个值,而是比较&#34;剥离的&#34;它的版本。 &#34;切换&#34;像往常一样,可以在整个细胞上完成。为了进行比较,我甚至只关注序列号,不包括扩展名。但要小心,这意味着你的序列不会超过99 ......