使用usort()排序数组时是否可以设置两个起始值?

时间:2014-02-16 08:50:10

标签: php sorting

$currency[0] = '$';
$currency[1] = 'WON';
$currency[2] = 'A$';
$currency[3] = '€';
$currency[4] = '¥';

我想使用$currencyusort()进行排序。但是我希望$是第一个,然后¥是第二个,然后其余的将按字母顺序排序。是否可以使用usort()

1 个答案:

答案 0 :(得分:1)

在您的情况下,您可以将sortarray_*个函数结合使用:

$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);
});