如何通過權重和類型對關聯數組排序?PHP:排序數組幫助
輸入
array(
'a' => array('type' => 't1', 'weight' => 1, 'text' => 'text1'),
'b' => array('type' => 't1', 'weight' => 3, 'text' => 'text2'),
'c' => array('type' => 't2', 'weight' => 5, 'text' => 'text3'),
'd' => array('type' => 't1', 'weight' => 2, 'text' => 'text4'),
'e' => array('type' => 't2', 'weight' => 4, 'text' => 'text5'),
'f' => array('type' => 't2', 'weight' => 4, 'text' => 'text6')
);
所需的輸出
array(
'a' => array('type' => 't1', 'weight' => 1, 'text' => 'text1'),
'd' => array('type' => 't1', 'weight' => 2, 'text' => 'text4'),
'b' => array('type' => 't1', 'weight' => 3, 'text' => 'text2'),
'e' => array('type' => 't2', 'weight' => 1, 'text' => 'text5'),
'f' => array('type' => 't2', 'weight' => 1, 'text' => 'text6'),
'c' => array('type' => 't2', 'weight' => 5, 'text' => 'text3')
);
類型 「T2」 在啓動時必須出現在陣列的端部,所有其他類型。
重量必須在鍵入後排序。
我正在使用uasort
與自定義比較功能,但我掙扎。這裏是我有什麼,但它不工作:
function my_comparer($a, $b) {
return ($a['type'] !== 't2' && $b['type'] === 't2')
? -1
: $a['weight'] - $b['weight'];
}
謝謝!我忘了我不得不面對相反的情況。 – 2011-04-13 16:19:35