$currency[0] = '$';
$currency[1] = 'WON';
$currency[2] = 'A$';
$currency[3] = '€';
$currency[4] = '¥';
我想使用$currency
对usort()
进行排序。但是我希望$
是第一个,然后¥
是第二个,然后其余的将按字母顺序排序。是否可以使用usort()
?
答案 0 :(得分:1)
在您的情况下,您可以将sort
与array_*
个函数结合使用:
$prime = array('$', '¥');
$matches = array_intersect($currency, $prime);
$currency = array_diff($currency, $prime);
sort($currency);
$currency = array_merge($matches, $currency);
<强>更新强>
使用usort
的替代解决方案:
$prime = array('$', '¥');
usort($currency, function ($a, $b) use ($prime) {
$i1 = array_search($a, $prime);
$i2 = array_search($b, $prime);
if ($i1 !== false || $i2 !== false)
return $i2 === false || $i1 !== false && $i1 < $i2? -1 : 1;
return $a < $b? -1 : ($a == $b? 0 : 1);
});