我想对一个字符串数组进行排序,其中我想用作排序标识符的子字符串位于所讨论的字符串的中间。我已经尝试过使用一种非常粗糙的技术来做到这一点,我想知道是否有更好的方法来做到这一点。
以下是我到目前为止的想法:
<?php
$tracks = array(
"Arcane Library_Track2.mp3",
"Deeper Ocean_Track4.mp3"
"Neon Illumination_Track3.mp3",
"Sound Of Cars_Track1.mp3",
);
$tracksreversed = array();
$sortedtracks = array();
foreach( $tracks as $t) {
array_push( $tracksreversed, strrev($t) );
}
sort($tracksreversed);
foreach( $tracksreversed as $t ) {
array_push( $sortedtracks, strrev($t) );
}
$tracks = $sortedtracks;
?>
这种方法是可行的,但有两个问题。首先,它使用了两个循环,第二个问题是,一旦我们包含更多的文件类型,如ogg
或wav
,这个方法就会失败。
有没有一种方法可以轻松地根据_Track1
,_Track2
,_Track3
标识符对这个字符串进行排序?也许这里可以做一些正则表达式排序,或者我可以做一些其他的方法,使它更紧凑?
2条答案
按热度按时间7gcisfzg1#
也许
usort
函数会有用。比如:似乎工作https://3v4l.org/j65rd
nvbavucw2#
修改我对this similar answer的建议,隔离尾随
_Track
的数字,并使用array_multisort()
进行排序,而不修改原始值或声明额外的变量。代码:(Demo)