2014-01-29 49 views
0

是否有分配一个“分数优先”在PHP中的数组的方式分配优先级排列值,然后排序?然后根据该优先级进行排序。由于我输入:PHP:通过优先

Array(
    [princeton] => Princeton 
    [stanford] => Stanford 
    [yale] => Yale 
    [mit] => MIT 
    [harvard] => Harvard 
) 

我想输出始终在顶部HarvardYale,其余的按字母顺序排序:

Array(
    [harvard] => Harvard 
    [yale] => Yale 
    [mit] => MIT 
    [princeton] => Princeton 
    [stanford] => Stanford  
) 

我检查了asort()这确实英文字母及uasort()这是自定义,但我坚持如何“分配优先级”。任何帮助,将不胜感激!

+0

哪里的重点是从哪里来的? –

+0

我将听筒他们的话,只有一对夫妇,但我被困在如何做分配。 – user1899415

+0

删除和分类后加入到顶部alphabetly似乎微不足道 – 2014-01-29 00:11:02

回答

1

uasort将通过自己的比较函数排序的数组。我已经将函数放在哈佛或耶鲁的第一个位置(这两个函数的排序是不确定的,因为您没有指定),并按字母顺序排序。

function cmp($a, $b) { 
    if ($a == 'Yale' || $a == 'Harvard') { 
     return -1; 
    } else if ($b == 'Yale' || $b == 'Harvard') { 
     return 1; 
    } else return strcmp($a, $b); 
} 

uasort($array, 'cmp'); 
0

假设你有类似

$priotities=array(
    [harvard] => 1 
    [yale] => 2 
    [mit] => 3 
    [princeton] => 4 
    [stanford] => 5 
) 

你可以

$final=$priorites; 
sort(final); 
foreach ($final as $k=>$v) 
    $final[$k]=$universities[$k];