是否有任何替代natsort可以处理像这样的数组
array('IMG0001.jpg','IMG00010.jpg','IMG0002.jpg','IMG000100.jpg','IMG00090.jpg','IMG00020.jpg','IMG000200.jpg')
预期产出
array('IMG0001.jpg','IMG0002.jpg','IMG00010.jpg','IMG00020.jpg','IMG00090.jpg','IMG000100.jpg','IMG000200.jpg')
答案 0 :(得分:1)
您可以使用此
$arr=array('IMG0001.jpg','IMG00010.jpg','IMG0002.jpg','IMG000100.jpg','IMG00090.jpg','IMG00020.jpg','IMG000200.jpg');
sort($arr, SORT_NATURAL );// also sort($arr, SORT_NATURAL | SORT_FLAG_CASE) for case sensitive sorting
答案 1 :(得分:1)
试一试:
$x = ['IMG0001.jpg','IMG00010.jpg','IMG0002.jpg','IMG000100.jpg',
'IMG00090.jpg','IMG00020.jpg','IMG000200.jpg'];
function removeLeadingZeros($x) {
return preg_replace('!([^\d]+)0+!', '\\1', $x);
}
usort($x, function ($a, $b) {
return strnatcmp(removeLeadingZeros($a), removeLeadingZeros($b));
});