2016-02-12 55 views
0

我有一個動態陣列,例如用下列元素:定製排序在PHP陣列 - 例如MySQL ORDER BY FIELD(order_fied,4,1,5,2,3)

$myArray = array(1, 2, 3, 4, 5); 

我想我的最終排列如下:

$finalArray = array(4, 1, 5, [whaterever]); 

什麼是自定義排序的最佳方式,既不是升序,也不是降序或不遵循任何規則?
感謝您的建議。

[編輯] 我編輯了我的問題。

+0

你能解釋一些嗎? –

+0

當你有一些特定值的數組,並且你希望這些數值在最後3位像4一樣重新排序(如上面的例子中所提到的)。所以可能是一個額外的函數,你提到值的排序發佈,並會返回該數組的排序版本? – MagePsycho

回答

3

您可以嘗試usort函數。在第二個參數中,你應該寫一個函數來決定你的數組元素應該如何放置。

事情是這樣的:

<?php 
$myArray = [1, 2, 3, 4, 5]; 

$properOrder = [4, 1, 5, 2, 3]; 
usort($myArray, function($a, $b) use($properOrder) { 
    $index1 = array_search($a, $properOrder); 
    $index2 = array_search($b, $properOrder); 

    if ($index1 > $index2) { 
     return 1; 
    } else if ($index1 < $index2) { 
     return -1; 
    } else { 
     return 0; 
    } 
}); 

print_r($myArray); 
+0

現在不工作。我想要最後一個數組有'array(4,1,5,[whaterever])' – MagePsycho

+0

@MagePsycho 1st您的問題現在與原始數據不同,因此請考慮詢問一個新問題。第二你應該嘗試在答案上編輯自定義函數,以便在索引不是4,1或5時返回-1。我們在這裏提供幫助,並指向正確的方向。不要做你的功課或你的工作。 – antoniom

+0

它在這裏 - http://stackoverflow.com/questions/35365385/custom-sorting-for-first-few-elements-of-an-array – MagePsycho