2015-11-13 80 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)