我有一個PHP數組,看起來像這樣:http://pastie.org/1346063(見陣列例如pastie)安排一個多維數組
我想要做的是重新排序該數組到由每個分揀另一個數組數組的[votes] [POINTS]子數組數值降序。具有最高[投票] [POINTS]值的數組將首先在主數組中列出。
我有一個PHP數組,看起來像這樣:http://pastie.org/1346063(見陣列例如pastie)安排一個多維數組
我想要做的是重新排序該數組到由每個分揀另一個數組數組的[votes] [POINTS]子數組數值降序。具有最高[投票] [POINTS]值的數組將首先在主數組中列出。
使用usort()
功能我們可以創建自己的比較功能:
function cmp($a, $b) {
if($a['votes']['POINTS'] == $b['votes']['POINTS']) {
return 0;
}
return ($a['votes']['POINTS'] < $b['votes']['POINTS']) ? 1 : -1;
}
usort($array, 'cmp');
結果:
使用測試數據相似的結構你:
Array
(
[0] => Array
(
[votes] => Array
(
[UP] => 1
[DOWN] => 0
[POINTS] => 5
)
)
[1] => Array
(
[votes] => Array
(
[UP] => 1
[DOWN] => 0
[POINTS] => 4
)
)
[2] => Array
(
[votes] => Array
(
[UP] => 1
[DOWN] => 0
[POINTS] => 2
)
)
[3] => Array
(
[votes] => Array
(
[UP] => 1
[DOWN] => 0
[POINTS] => 1
)
)
)
解決方案: -
假設,你的數組存儲在一個名爲變量$數據
你可以簡單的排序您的多維數組array_multisort
foreach ($data as $key => $row) {
$points[$key] = $row['votes']['points'];
}
// Sort the data with points descending
array_multisort($points, SORT_DESC, $data);
希望這有助於。
你給我的功能似乎不起作用。我不確定它是否是CodeIgniter或函數中的某些內容。我嘗試將該函數作爲插件加載,並且似乎出錯。我不確定錯誤是什麼,因爲我的錯誤沒有顯示。錯誤發生的唯一時間是用cmp調用usort函數。 – DevNull 2010-12-04 02:36:56