我有一个包含北、东、南或西的数组。
例如,我得到了一个数组,值的顺序是:南、西和北。
现在,我想对数组进行排序,如北、东、南和西。
因此,在我的示例中,值应按以下顺序排列:北、南、西。
我该怎么做呢?
谢谢!
发布于 2011-12-29 02:08:11
您也可以使用array_intersect()。它保留了第一个数组的顺序。将所有基本方向按正确顺序排列的数组作为第一个参数,并将要排序的数组作为第二个参数。
$cardinals = array( 'north', 'east', 'south', 'west' );
$input = array( 'south', 'west', 'north' );
print_r( array_intersect( $cardinals, $input ) );发布于 2011-12-29 02:15:27
你可以这样做(我相信这也是Samuel Lopez在评论中提出的建议):
$arr = array ('north', 'west', 'south', 'east', );
function compass_sort ($a, $b)
{
$cmptable = array_flip (array (
'north',
/* you might want to add 'northeast' here*/
'east',
/* and 'southeast' here */
'south',
'west',
));
$v1 = trim (mb_strtolower ($a));
$v2 = trim (mb_strtolower ($b));
if ( ! isset ($cmptable[$v1])
|| ! isset ($cmptable[$v2]))
{
/* error, no such direction */
}
return $cmptable[$v1] > $cmptable[$v2];
}
usort ($arr, 'compass_sort');这将为每个方向分配一个数字,并根据该数字进行排序,north将被分配为0,east将被分配为1(除非您在两者之间添加了一些内容),依此类推。
https://stackoverflow.com/questions/8659495
复制相似问题