2015-11-13 49 views
1

我有一个数组,我需要通过一些任意定义重新排序,我不确定uksort如何提供帮助。任意排列数组键

这是我要排序的数组:

[ 
    [Alice] => foo, 
    [Bob] => foo, 
    [John] => foo, 
    [Steve] => foo 
] 

我要重新排序这个数组是鲍勃,爱丽丝,史蒂夫,然后约翰......或其他一些明确声明的顺序。有没有办法采取单独的阵列和使用重新排序原始的密钥?

我知道我可以只在阵列上环,并建立一个新的数组,但似乎不雅...

回答

0

确定后一些戳这个是性感:

$finialOrderArray = array_merge(array_flip($orderArray), $array); 

也许有一个性感的方式,但基本的foreach循环,虽然排序顺序似乎是一种很好的方法

<?php 
$array=array('Alice' => 'foo','Bob' => 'foo','John' => 'foo','Steve' => 'foo'); 
$orderArray=array('Bob', 'Alice', 'Steve', 'John'); 


function orderArray($array, $orderArray) { 
    $ordered = array(); 
    foreach($orderArray as $k) { 
     if(array_key_exists($k,$array)) { 
      $ordered[$k] = $array[$k]; 

     } 
    } 
    return $ordered; 

print_r(orderArray($array,$orderArray)); 
    //Array ([Bob] => foo [Alice] => foo [Steve] => foo [John] => foo)