Har*_*pua 1 php arrays sorting
我有一个使用DirectoryIterator获取的文件名数组.我试图让文件名进行排序,以便它们按顺序排列,这就是它们在服务器上的显示方式.
2DAYSALEGATE_PG1.jpg
2DAYSALEGATE_PG2.jpg
722_PG1.jpg
PW_PG2_COKE_A.jpg
PW_PG3_COKE_A.jpg
PWBY4_DELI-1.jpg
在获取文件名时,它们会像这样出现.我试过使用sort,natsort和natcasesort.在字母后面考虑下划线字符的文件名.我该怎么做才能将下划线排序为优先级字符.
array(6) {
[0]=>
string(20) "2DAYSALEGATE_PG1.jpg"
[1]=>
string(20) "2DAYSALEGATE_PG2.jpg"
[2]=>
string(11) "722_PG1.jpg"
[5]=>
string(16) "PWBY4_DELI-1.jpg"
[3]=>
string(17) "PW_PG2_COKE_A.jpg"
[4]=>
string(17) "PW_PG3_COKE_A.jpg"
}
Run Code Online (Sandbox Code Playgroud)
谢谢
您可以使用php usort方法,在此处查看
,usort您可以实现自定义compare to函数并根据它对数组进行排序.
自定义compare to函数是int callback ( mixed $a, mixed $b ),你应该返回一个小于0的值$a < $b,如果相等则为零,而当大于0时则返回一个大于0 的值$a > $b
使用此方法实现您首选的排序顺序
例:
function cmp($a, $b) {
$aTemp = str_replace('_', '0', $a);
$bTemp = str_replace('_', '0', $b);
return strcmp($aTemp,$bTemp);
}
usort($arr, "cmp");
Run Code Online (Sandbox Code Playgroud)