2012-07-03 51 views
0

的多個列我想打一個數組排序方法,這樣你就可以通過排序價格/ ID號碼等一些信息PHP數組排序隨着數據

我的數組是這樣的:

[1] 1002234985, $123.00, ITEM DESCRIPTION #1 

[2] 1034234985, $143.70, ITEM DESCRIPTION #2 

[3] 1002467455, $133.06, ITEM DESCRIPTION #3 

[4] 1564334985, $883.11, ITEM DESCRIPTION #4 

我想要按價格對數組進行排序,但要將描述和ID號相匹配。我怎樣才能做到這一點?

謝謝!

+0

這是一個多維數組嗎? –

回答

1

compare函數(其接收兩個元素並返回哪一個是較大的),並使用usort使用它

一個例子:

$arr = array(
       array(1002234985, '125.00', 'ITEM DESCRIPTION'), 
       array(1002234986, '124.00', 'ITEM DESCRIPTION'), 
       array(1002234987, '123.00', 'ITEM DESCRIPTION') 
); 
function mycomp($itm1, $itm2){ 
    if($itm1[1] > $itm2[1]){ 
     return 1; 
    } 
    else if($itm1[1] < $itm2[1]){ 
     return -1; 
    } 
    else{ 
     return 0; 
    } 
} 
usort($arr, 'mycomp'); 
print_r($arr); 
+0

令人驚歎!謝謝! –

0

下面是使用排序多維陣列的示例PHP的usort

// Change this to the index of the key you wish to sort by 
$sortBy = 0; 

$myArray = array(
    array(1002234985, '$123.00', 'ITEM DESCRIPTION #1'), 
    array(1034234985, '$143.70', 'ITEM DESCRIPTION #2'), 
    array(1002467455, '$133.06', 'ITEM DESCRIPTION #3'), 
    array(1564334985, '$883.11', 'ITEM DESCRIPTION #4') 
]; 

usort($myArray, 'cmp'); 

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

這段代碼甚至沒有編譯! – alfasin

+0

這看起來像我在找什麼 - 會試試這個! –

+0

@alfasin哈哈,忘記了一些分號,編輯/修正。 –