我有一個動態陣列,例如用下列元素:定製排序在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]);
什麼是自定義排序的最佳方式,既不是升序,也不是降序或不遵循任何規則?
感謝您的建議。
[編輯] 我編輯了我的問題。
我有一個動態陣列,例如用下列元素:定製排序在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]);
什麼是自定義排序的最佳方式,既不是升序,也不是降序或不遵循任何規則?
感謝您的建議。
[編輯] 我編輯了我的問題。
您可以嘗試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);
現在不工作。我想要最後一個數組有'array(4,1,5,[whaterever])' – MagePsycho
@MagePsycho 1st您的問題現在與原始數據不同,因此請考慮詢問一個新問題。第二你應該嘗試在答案上編輯自定義函數,以便在索引不是4,1或5時返回-1。我們在這裏提供幫助,並指向正確的方向。不要做你的功課或你的工作。 – antoniom
它在這裏 - http://stackoverflow.com/questions/35365385/custom-sorting-for-first-few-elements-of-an-array – MagePsycho
你能解釋一些嗎? –
當你有一些特定值的數組,並且你希望這些數值在最後3位像4一樣重新排序(如上面的例子中所提到的)。所以可能是一個額外的函數,你提到值的排序發佈,並會返回該數組的排序版本? – MagePsycho