2012-08-02 59 views
2

我想執行PHP以下服務器端創建百分比陣列...方便的方法來從另一個陣列

如果我有一個數組是這樣的:$array1 = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10),我可以創建一個包含了另一個數組每個值的百分比(每個值除以總數)?有沒有辦法做到這一點,而不是強迫使用for循環?我基本上要創建數組2

sum_array($array1)產生55(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55)

$array2 = array(1.8%, 3.6%, 5.4%, 7.2%, 9%, 10.9%, 12.7%, 15.5%, 16.3%, 18.2%)

預先

由於

回答

8

您可以使用array_map

$array1 = array(1,2,3,4,5,6,7,8,9,10); 
$total = array_sum($array1); 

$array2 = array_map(function($a) use($total){ 
    return round(($a*100)/$total, 1) . '%'; 
}, $array1); 
+0

擊敗了我15秒...我只是+1你的。也爲'use()'+1 +1 - 我沒有想到這一點,並想知道如何回調可以引用'$ total'而不訴諸全球。 – Utkanos 2012-08-02 15:31:18

+0

由於無法循環無法完成(並且'array_map'在這裏進行循環)+1以獲得良好的答案! – alfasin 2012-08-02 15:31:36

+1

@Utkanos:是的,'use'很奇怪。我瞭解了它,我喜歡在各種情況下嘗試使用它(雙關語意)。 – 2012-08-02 15:32:14