2014-01-28 91 views
0

我有這種多維數組,其保持這些內數組值值減法:在陣列計數值,並加入部分計數以及在陣列

Array_X (
[0] => Array ([0] => A [1] => D [2] => C [3] =>B) 
[1] => Array ([0] => A [1] => D [2] => E)     
[2] => Array ([0] => A [1] => E [2] => D)    
[3] => Array ([0] => D [1] => A [2] => B)  
[4] => Array ([0] => D [1] => A [2] => C)  
[5] => Array ([0] => D [1] => E) 
[6] => Array ([0] => D [1] => E [2] => E [3] =>A) 
) 

在該第一陣列,我執行「A的計數「和」D「在這些數組中的位置[0]。 「A」出現3次,並且「d」出現4次,而在另一個1名維陣列存儲此爲:

Array_count_1 ([A] => 3 [D] => 4) 

我然後從所有這些內陣列消除「A」(通過「未設置」),和結束:

Array_Y (
[0] => Array ([0] => **D** [1] => C [2] => B [3] =>) 
[1] => Array ([0] => **D** [1] => E [2] => )    
[2] => Array ([0] => **E** [1] => D [2] => )   
[3] => Array ([0] => D [1] => B [2] => ) 
[4] => Array ([0] => D [1] => C [2] => )  
[5] => Array ([0] => D [1] => E) 
[6] => Array ([0] => D [1] => E [2] => E [3] =>A) 
) 

利用該第二新的數組然後我需要在其上出現的第一個元素[0]的所有值進行計數。在這個新數組(Array_Y)中,「D」被計數​​6次,而「E」1次位於[0]位置。

Array_count_2 ([D] => 6 [E] => 1) 

問題:

但在陣列Array_count_2,而不是授予一個完整的點d,E等,它們的每個實例打動了我:

Array_count_2 ([D] => 6 [E] => 1) 

我想在每個實例中獲得位置[0]的值(在值「A」被消除之後)授予一個部分點(即,當計數完成時爲0.25,而不是默認值1)。如圖所示,在'Array_X'中,當「A」被消除時,值「D」將以2個數組(或2次)移位到[0],並且值「E」被移位到位置1個數組中的[0](或1次))。他們的新職位見於'Array_Y'。

代替:

Array_count_2 ([D] => 6 [E] => 1) 

我想陣列爲:

Array_count_2 ([D] => 4.50 [E] => 0.25) 

d:從位置[0]在數組 '陣列_X' 4點,2點乘以0.25 (被授予的部分點)移動到陣列'Array_Y'中看到的位置[0]),總共0.50

E:1點乘以0.25點爲TS被轉移到位置[0]看到陣列「陣列_Y」共0.25

我認爲這裏的關鍵是在做計數獲得:

Array_count_1 ([A] => 3 [D] => 4) 

Array_count_2 ([D] => 6 [E] => 1) 

則:

Array_count_2 - Array_count_1 

所以我結束了

Array_count_3 ([D] => 2 [E] => 1) 

我將如何執行這一減法獲得像「Array_count_3」的數組?

我會那麼需要採取 'Array_count_3' 和乘用(0.25)每個值來獲得:

Array_count_4 ([D] => 0.50 [E] => 0.25) 

然後添加 'Array_count_4' + 'Array_count_1'

Array_count_1 ([A] => 3 [D] => 4) 
Array_count_4 ([D] => 0.50 [E] => 0.25) 

獲得最終陣列:

Array_count_2 ([D] => 4.50 [E] => 0.25) 

沒有「A」的存在(因爲它被淘汰了)?

感謝您抽出寶貴時間,耐心等待!欣賞它!

+0

其實'unset'不會改變任何東西。 'array_splice'將會。如果你通過unser取消枚舉數組的第一個元素,你會得到像這樣的結果:'(1 => value,2 => value ...' –

+0

比使用array_splice更容易array_shift – Matt

回答

1

試試這個代碼上$Array_count_2

foreach ($Array_count_2 as $k => $v) { 
    $Array_count_3[$k] = $Array_count_2[$k] - $Array_count_1[$k]; 
    $Array_count_4[$k] = ($Array_count_2[$k] - $Array_count_1[$k])/0.25; 
    $Array_count_2[$k] = $Array_count_4[$k] + $Array_count_1[$k]; 
} 

最後一行重寫值。使用另一個數組名稱以保持原來的$Array_count_2

+0

您好miltos - 會給這個嘗試和看看它是怎麼回事,我會回到你這裏,謝謝。 – FartMachine4U