2014-04-26 111 views
2

初始陣列PHP從一個陣列

Array 
(
[0] => Array 
    (
     [RecordDay] => 23 
     [Amount] => 1.50 
     [DocumentName] => bank stmt 
     [DocumentNumber] => 1 
    ) 
[1] => Array 
    (
     [RecordDay] => 17 
     [Amount] => 0.21 
     [DocumentName] => invoice 
     [DocumentNumber] => 2 
    ) 
[2] => Array 
    (
     [RecordDay] => 17 
     [Amount] => 1.00 
     [DocumentName] => invoice 
     [DocumentNumber] => 2 
    ) 
) 

從所有的子陣列,其中[RecordDay][DocumentName][DocumentNumber]是相同的要創建新的數組創建多個陣列。

對於鍵[1][2][RecordDay][DocumentName][DocumentNumber]是相同的。

因此,作爲一個結果,要得到這個

Array 
(
[0] => Array 
    (
     [RecordDay] => 23 
     [Amount] => 1.50 
     [DocumentName] => bank stmt 
     [DocumentNumber] => 1 
    ) 
) 

Array 
(
[0] => Array 
    (
     [RecordDay] => 17 
     [Amount] => 0.21 
     [DocumentName] => invoice 
     [DocumentNumber] => 2 
    ) 

[1] => Array 
    (
     [RecordDay] => 17 
     [Amount] => 1.00 
     [DocumentName] => invoice 
     [DocumentNumber] => 2 
    ) 
) 

但不知道該怎麼做

了這樣

$first_loop = true; 

foreach($initial_array as $key => $one_dimensional_array){ 

    if($first_loop == true){ 
    $new_array1['RecordDay'][] = $one_dimensional_array['RecordDay']; 
    $first_loop = false; 
    } 

    if($first_loop == false){ 

    if(in_array($one_dimensional_array['RecordDay'], $new_array1['RecordDay'])){ 
    $new_array1['RecordDay'][] = $one_dimensional_array['RecordDay']; 
    } 
    else{ 
    $new_array2['RecordDay'][] = $one_dimensional_array['RecordDay']; 
    } 

    }//if($first_loop == false){ 

}//foreach($initial_array as $key => $one_dimensional_array){ 

Array 
(
[RecordDay] => Array 
    (
     [0] => 23 
     [1] => 23 
    ) 

[DocumentName] => Array 
    (
     [0] => bank stmt 
     [1] => bank stmt 
    ) 

[DocumentNumber] => Array 
    (
     [0] => 1 
     [1] => 1 
    ) 

) 

Array 
(
[RecordDay] => Array 
    (
     [0] => 17 
     [1] => 17 
    ) 

[DocumentName] => Array 
    (
     [0] => invoice 
     [1] => invoice 
    ) 

[DocumentNumber] => Array 
    (
     [0] => 2 
     [1] => 2 
    ) 

) 

但這不是什麼想要的。任何想法需要改變?

回答

2

嘗試這樣,

$temp_array=array(); 
foreach($initial_array as $arr){ 
    $temp_array[$arr['RecordDay'].",".$arr['DocumentNumber'].",".$arr['DocumentName']] []=$arr; //here it will **ADD** a new array in a key 'RecordDay,DocumentNumber,DocumentName' format. e.g. [23,1,'bank stmt'] , [17,2,'invoice']. 


} 

現在你需要處理$temp_array得到各個陣列

foreach ($temp_array as $separate_array){ 
    print_r($separate_array); //process your new array here one by one. 
} 

工作DEMO

+0

DocumentName和數量沒有關係。號碼是文件號碼,例如,發票號碼AB123,說明04/14-01等等 – user2118559

+0

好吧,我已經更新了答案,以適應該條件:) –

+0

所有作品都非常好。順便試着瞭解它是如何工作的。例如,如果更改爲'foreach($ initial_array as $ key => $ arr){'和'$ temp_array [$ key] [] = $ arr;',則獲取與初始相同的數組。理解所有基於'$ arr ['RecordDay']。「,」。$ arr ['DocumentName']。「,」。$ arr ['DocumentNumber']' – user2118559