2011-08-29 114 views
1

IAM試圖理清這個陣列由陣列[關鍵] [「溢價」] [「月」],如果有兩個每月的價格相同,則排序季度,然後半 - 每年,然後每年。PHP的排序上的特定按鍵多維數組基地

我搜索並且不可能弄清楚如何使用在array_multisort功能。

Array (
[0] => Array (
    [product_id] => 1 
    [rate] => 27.07 
    [premium] => Array (
     [Annual] => 436.05 
     [Semi-Annual] => 226.75 
     [Quarterly] => 115.6 
     [Monthly] => 37.11 
    ) 
) 
[1] => Array (
    [product_id] => 2 
    [rate] => 35.00 
    [premium] => Array (
     [Annual] => 565 
     [Semi-Annual] => 293.8 
     [Quarterly] => 149.73 
     [Monthly] => 50.85 
    )  
) 
[2] => Array (
    [product_id] => 3 
    [rate] => 30.52 
    [premium] => Array (
     [Annual] => 497.8 
     [Monthly] => 47.29 
    ) 
) 
) 

回答

1

我想你想使用usort功能,像

function compare($a, $b){ 
    $p1 = $a["premium"]; 
    $p2 = $b["premium"]; 
    if($p1["Monthly"] == $p2["Monthly"]){ 
    // compare by quarterly 
    ... 
    }else{ 
    if($p1["Monthly"] < $p2["Monthly"])then return -1; 
    else return 1; 
    } 
} 

usort($prices, "compare"); 

其中$prices是你的陣列。比較功能沒有完全實現,只是爲了展示這個想法。此外,因爲它看起來像有可能是價格陣列中(即最後一個錯過季度和半年度)你必須先(比較前)檢查做的項目存在,並採取適當行動的情況下,一個或兩個是缺少遺失物品。

+0

感謝名單,它仍然能正常工作。我剛剛添加了幾個括號,我們很好。你需要弄清楚哪些數據需要排序,因爲我們可能會得到不同的結果。 thanx再次爲你提供幫助。 –