2011-08-29 88 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再次为你提供帮助。 –