2012-05-17 66 views
0

我正在尋找幫助。我發現ksort和其他排序方法的PHP。但是我使用一個名爲order的密鑰在陣列中獲得了一個陣列。而這個我想是數組按鍵排列php數組array

array(
    array("obj" => $objPage, "id" => "LogIn", "order" => 3), 
    array("obj" => $objPage, "id" => "Home", "order" => 1), 
    array("obj" => $objPage, "id" => "Register", "order" => 2), 
    array("obj" => $objPage, "id" => "Imprint", "order" => 4), /* ... */ 
) 

的順序現在我想的數組對象進行排序,因爲這:

array(
    array("obj" => $objPage, "id" => "Home", "order" => 1), 
    array("obj" => $objPage, "id" => "Register", "order" => 2), 
    array("obj" => $objPage, "id" => "LogIn", "order" => 3), 
    array("obj" => $objPage, "id" => "Imprint", "order" => 4), /* ... */ 
) 

你能不能給我一個提示,如何解決這個問題?

回答

0
function cmp($a, $b) 
{ 
    if ($a ['order'] == $b ['order']) { 
     return 0; 
    } 
    return ($a ['order'] < $b ['order']) ? -1 : 1; 
} 

usort($array, "cmp"); 

print_r ($array); 
0

一個相當簡單的解決方案將是使用數組索引本身存儲的順序,然後使用sort到陣列成順序進行排序,然後array_values重新索引呢?

0

array_multisort可能對您有效:

Suposing你的數組稱爲$ myArray的

foreach ($myArray as $key => $row) { 
    $order[$key] = $row['order']; 
} 

array_multisort($order, SORT_ASC, $myArray)