2015-07-13 81 views
-1

我是PHP新手,在我的項目中發現此問題。 我有這個數組:合併具有相同值的數組並將其他數組顯示爲值

Array 
(

[0] => Array 
    (
     [count] => 1 
     [account] => 14 
     [amt] => 1000 
    ) 

[1] => Array 
    (
     [count] => 1 
     [account] => 11 
     [amt] => 124 
    ) 

[2] => Array 
    (
     [count] => 1 
     [account] => 12 
     [amt] => 2345 
    ) 

[3] => Array 
    (
     [count] => 1 
     [account] => 14 
     [amt] => 2345 
    ) 

) 

,我想將其改造成這種格式

Array 
(
[14] => Array 
    (
     [0] => Array 
      (
       [amt] => 1000 
       [count] => 1 
       [volume] => 1000 
      ) 
     [1] => Array 
      (
       [amt] => 124 
       [count] => 0 
       [volume] => 0 
      ) 

     [2] => Array 
      (
       [amt] => 2345 
       [count] => 1 
       [volume] => 2345 
      ) 

    ) 

[11] => Array 
    (
     [0] => Array 
      (
       [amt] => 1000 
       [count] => 0 
       [volume] => 0 
      ) 
     [1] => Array 
      (
       [amt] => 124 
       [count] => 1 
       [volume] => 124 
      ) 
     [2] => Array 
      (
       [amt] => 2345 
       [count] => 0 
       [volume] => 0 
      ) 

    ) 

[12] => Array 
    (
     [0] => Array 
      (
       [amt] => 1000 
       [count] => 0 
       [volume] => 0 
      ) 
     [1] => Array 
      (
       [amt] => 124 
       [count] => 0 
       [volume] => 0 
      ) 
     [2] => Array 
      (
       [amt] => 2345 
       [count] => 1 
       [volume] => 2345 
      ) 

    ) 

) 

正如你可能會注意到account鍵成爲新陣的鑰匙,和裏面的數組值包含第一個數組上的所有數組。請幫忙。這就像一個硬核陣列,我真的需要它來做我的項目。謝謝!

回答

1

試試這個:

$newArray = array(); 
foreach ($origArray as $val) 
{ 
    $val['volume'] = $val['count'] * $val['amt']; 
    $account = $val['account']; 
    unset($val['account']); 
    $newArray[$account][]=$val; 
} 

編輯

好吧,我想,也許這是你附近想去的地方,雖然我不明白爲什麼有3個結果中的每個帳戶時,有4個開始。

$newArray = array(); 
$accounts = array(); 
foreach ($origArray as $val) { 
    $accounts[$val['account']] = $val['account']; 
} 

foreach ($accounts as $account) { 
    foreach ($origArray as $val) { 
     $val['count'] = $account == $val['account'] ? $val['count'] : 0; 
     $val['volume'] = $val['count'] * $val['amt']; 
     unset($val['account']); 
     $newArray[$account][] = $val; 
    } 
} 
+0

$ newArray [$ account]上的$ account沒有顯示其值,並且僅循環一次..我甚至無法獲得它爲什麼沒有值。 – user3151141

+0

'$ account'正被用於將數組附加到'$ newArray'中相應帳戶的索引,它並不是按照您的要求顯示的。如果你希望它顯示在數組中刪除'unset($ val ['account']);' – andrew

+0

輸出數組不同於預期的輸出。 – user3151141

0
<?php 
$final_array = array(); 
$dataset = YOUR FIRST ARRAY; 

foreach($dataset as $data) 
{ 
    $account = $data['account']; 
    unset($data['account']) 
    $final_array[$account][] = $data; 
} 

這應該做你所需要的。雖然我不知道在第二個數組中的音量來自哪裏

+0

感謝您的回覆。體積是計數和金額的乘積。 我試過你的代碼,$賬戶沒有顯示它的值。輸出不同,請注意第二個數組上的計數。 – user3151141