2014-04-26 44 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