2015-05-26 55 views
0

我有多個陣列結構如下排序第四元素上並保持相同的密鑰值在PHP

array (
    'Mexico' => 
    array (
    'Regular_Club' => 
    array (
     '2015-02' => 
     array (
     'cost' => 41479.8, 
     'signups' => 3891, 
     'share' => 16241.46, 
    ), 
    ), 
    'Sweepstakes' => 
    array (
     '2015-02' => 
     array (
     'cost' => 1186736.04, 
     'signups' => 280850, 
     'share' => 468069.14, 
    ), 
    ), 
), 
) 

我要作爲排序依據現場成本這個數組降序排列。我嘗試過uasort,但是沒有運氣。結果應該在下面。

Result: 
array (
    'Mexico' => 
    array (
    'Sweepstakes' => 
    array (
     '2015-02' => 
     array (
     'cost' => 1186736.04, 
     'signups' => 280850, 
     'share' => 468069.14, 
    ), 
    ), 
    'Regular_Club' => 
    array (
     '2015-02' => 
     array (
     'cost' => 41479.8, 
     'signups' => 3891, 
     'share' => 16241.46, 
    ), 
    ), 

), 
) 

在此先感謝。

+0

2015-02是不固定的值會根據每個月改變,因此不能使用該名稱,並且連名字regular_club或抽獎活動,他們沒有固定的名稱。它會在其他月份,其他國家改變。 – user1648204

回答

0

Coolect前成本和使用uksort:

foreach ($inputArray as $country => $array) { 
    foreach($array as $key => $value) 
    foreach ($value as $val) $weight[$key] = (int) $val['cost']; 
     uksort($array, function ($k1, $k2) use ($weight) { return $weight[$k2] - $weight[$k1]; });  
    $resultArray = array($country => $array); 
} 

var_export($resultArray); 
+0

在結果數組中墨西哥也沒有固定的名字。我們將有不同的國家,所以我不能使用固定名稱來收取成本。只需將maxico作爲國家的關鍵。它也可以是不同的國家。 – user1648204

+0

也一樣。添加 – splash58

+0

它不工作。它沒有按成本排序......在這個例子中,我只寫了2個元素,但最初我有很多......並且它沒有相應的排序。其排序只有最後兩個元素。其他對象沒有排序。 – user1648204

相關問題