2013-10-31 328 views
2

我有个案例来创建或合并两个阵列到单个阵列。将两个阵列合并或组合成单个阵列

第一个数组是这样的:

Array // First Array 
(
    [0] => Array 
     (
      [hotel] => cempaka 
      [vendor] => mas 
     ) 

    [1] => Array 
     (
      [hotel] => permata 
      [vendor] => sip 
     ) 
) 

二阵:

Array 
(
    [0] => Array 
    (
     [order_type] => 1 
     [currency] => 26 
     [net] => 26000 
     [rate] => 26000 
     [amount] => 26000 
     [bank_surcharge] => 26000 
     [ticket] => 26000 
     [profit] => 26000 
     [selling_price] => 26000 
     [description] => a 
    ) 

[1] => Array 
    (
     [order_type] => 2 
     [currency] => 27 
     [net] => 27000 
     [rate] => 27000 
     [amount] => 27000 
     [bank_surcharge] => 27000 
     [ticket] => 27000 
     [profit] => 27000 
     [selling_price] => 27000 
     [description] => b 
    ) 

[2] => Array 
    (
     [order_type] => 5 
     [currency] => 28 
     [net] => 28000 
     [rate] => 28000 
     [amount] => 28000 
     [bank_surcharge] => 28000 
     [ticket] => 28000 
     [profit] => 28000 
     [selling_price] => 28000 
     [description] => c 
    ) 

[3] => Array 
    (
     [order_type] => 3 
     [currency] => 29 
     [net] => 29000 
     [rate] => 29000 
     [amount] => 29000 
     [bank_surcharge] => 29000 
     [ticket] => 29000 
     [profit] => 29000 
     [selling_price] => 29000 
     [description] => d 
    ) 

[4] => Array 
    (
     [order_type] => 4 
     [currency] => 30 
     [net] => 30000 
     [rate] => 30000 
     [amount] => 30000 
     [bank_surcharge] => 30000 
     [ticket] => 30000 
     [profit] => 30000 
     [selling_price] => 30000 
     [description] => e 
    ) 

[5] => Array 
    (
     [order_type] => 6 
     [currency] => 31 
     [net] => 31000 
     [rate] => 31000 
     [amount] => 31000 
     [bank_surcharge] => 31000 
     [ticket] => 31000 
     [profit] => 31000 
     [selling_price] => 31000 
     [description] => f 
    ) 

[6] => Array 
    (
     [order_type] => 1 
     [currency] => 32 
     [net] => 32000 
     [rate] => 32000 
     [amount] => 32000 
     [bank_surcharge] => 32000 
     [ticket] => 32000 
     [profit] => 32000 
     [selling_price] => 32000 
     [description] => g 
    ) 

[7] => Array 
    (
     [order_type] => 2 
     [currency] => 33 
     [net] => 33000 
     [rate] => 33000 
     [amount] => 33000 
     [bank_surcharge] => 33000 
     [ticket] => 33000 
     [profit] => 33000 
     [selling_price] => 33000 
     [description] => h 
    ) 

[8] => Array 
    (
     [order_type] => 5 
     [currency] => 34 
     [net] => 34000 
     [rate] => 34000 
     [amount] => 34000 
     [bank_surcharge] => 34000 
     [ticket] => 34000 
     [profit] => 34000 
     [selling_price] => 34000 
     [description] => i 
    ) 

[9] => Array 
    (
     [order_type] => 3 
     [currency] => 35 
     [net] => 35000 
     [rate] => 35000 
     [amount] => 35000 
     [bank_surcharge] => 35000 
     [ticket] => 35000 
     [profit] => 35000 
     [selling_price] => 35000 
     [description] => j 
    ) 

[10] => Array 
    (
     [order_type] => 4 
     [currency] => 36 
     [net] => 36000 
     [rate] => 36000 
     [amount] => 36000 
     [bank_surcharge] => 36000 
     [ticket] => 36000 
     [profit] => 36000 
     [selling_price] => 36000 
     [description] => k 
    ) 

[11] => Array 
    (
     [order_type] => 6 
     [currency] => 37 
     [net] => 37000 
     [rate] => 37000 
     [amount] => 37000 
     [bank_surcharge] => 37000 
     [ticket] => 37000 
     [profit] => 37000 
     [selling_price] => 37000 
     [description] => l 
    ) 
) 

,然后这是我想要得到的输出:

Array 
(
[0] => Array 
    (
     [hotel] => cempaka 
     [vendor] => mas 
     [order_type] => 1 
     [currency] => 26 
     [net] => 26000 
     [rate] => 26000 
     [amount] => 26000 
     [bank_surcharge] => 26000 
     [ticket] => 26000 
     [profit] => 26000 
     [selling_price] => 26000 
     [description] => a 
    ) 

[1] => Array 
    (
     [hotel] => cempaka 
     [vendor] => mas 
     [order_type] => 2 
     [currency] => 27 
     [net] => 27000 
     [rate] => 27000 
     [amount] => 27000 
     [bank_surcharge] => 27000 
     [ticket] => 27000 
     [profit] => 27000 
     [selling_price] => 27000 
     [description] => b 
    ) 

[2] => Array 
    (
     [hotel] => cempaka 
     [vendor] => mas 
     [order_type] => 5 
     [currency] => 28 
     [net] => 28000 
     [rate] => 28000 
     [amount] => 28000 
     [bank_surcharge] => 28000 
     [ticket] => 28000 
     [profit] => 28000 
     [selling_price] => 28000 
     [description] => c 
    ) 

[3] => Array 
    (
     [hotel] => cempaka 
     [vendor] => mas 
     [order_type] => 3 
     [currency] => 29 
     [net] => 29000 
     [rate] => 29000 
     [amount] => 29000 
     [bank_surcharge] => 29000 
     [ticket] => 29000 
     [profit] => 29000 
     [selling_price] => 29000 
     [description] => d 
    ) 

[4] => Array 
    (
     [hotel] => cempaka 
     [vendor] => mas 
     [order_type] => 4 
     [currency] => 30 
     [net] => 30000 
     [rate] => 30000 
     [amount] => 30000 
     [bank_surcharge] => 30000 
     [ticket] => 30000 
     [profit] => 30000 
     [selling_price] => 30000 
     [description] => e 
    ) 

[5] => Array 
    (
     [hotel] => cempaka 
     [vendor] => mas 
     [order_type] => 6 
     [currency] => 31 
     [net] => 31000 
     [rate] => 31000 
     [amount] => 31000 
     [bank_surcharge] => 31000 
     [ticket] => 31000 
     [profit] => 31000 
     [selling_price] => 31000 
     [description] => f 
    ) 

[6] => Array 
    (
     [hotel] => permata 
     [vendor] => sip 
     [order_type] => 1 
     [currency] => 32 
     [net] => 32000 
     [rate] => 32000 
     [amount] => 32000 
     [bank_surcharge] => 32000 
     [ticket] => 32000 
     [profit] => 32000 
     [selling_price] => 32000 
     [description] => g 
    ) 

[7] => Array 
    (
     [hotel] => permata 
     [vendor] => sip 
     [order_type] => 2 
     [currency] => 33 
     [net] => 33000 
     [rate] => 33000 
     [amount] => 33000 
     [bank_surcharge] => 33000 
     [ticket] => 33000 
     [profit] => 33000 
     [selling_price] => 33000 
     [description] => h 
    ) 

[8] => Array 
    (
     [hotel] => permata 
     [vendor] => sip 
     [order_type] => 5 
     [currency] => 34 
     [net] => 34000 
     [rate] => 34000 
     [amount] => 34000 
     [bank_surcharge] => 34000 
     [ticket] => 34000 
     [profit] => 34000 
     [selling_price] => 34000 
     [description] => i 
    ) 

[9] => Array 
    (
     [hotel] => permata 
     [vendor] => sip 
     [order_type] => 3 
     [currency] => 35 
     [net] => 35000 
     [rate] => 35000 
     [amount] => 35000 
     [bank_surcharge] => 35000 
     [ticket] => 35000 
     [profit] => 35000 
     [selling_price] => 35000 
     [description] => j 
    ) 

[10] => Array 
    (
     [hotel] => permata 
     [vendor] => sip 
     [order_type] => 4 
     [currency] => 36 
     [net] => 36000 
     [rate] => 36000 
     [amount] => 36000 
     [bank_surcharge] => 36000 
     [ticket] => 36000 
     [profit] => 36000 
     [selling_price] => 36000 
     [description] => k 
    ) 

[11] => Array 
    (
     [hotel] => permata 
     [vendor] => sip 
     [order_type] => 6 
     [currency] => 37 
     [net] => 37000 
     [rate] => 37000 
     [amount] => 37000 
     [bank_surcharge] => 37000 
     [ticket] => 37000 
     [profit] => 37000 
     [selling_price] => 37000 
     [description] => l 
    ) 
) 

(这种双阵列我得到从动态字段生成通过javascript) 任何解决方案将不胜感激很多..谢谢

+0

您是否尝试过我的答案..? ? – Gautam3164

+0

它不工作,给我我想要的输出。所以,基本上,我有多个字段形式的JavaScript&html,我想通过它的值传递给数组与PHP。所以我可以在屏幕上显示它或将其插入到数据库。比方说,第一个数组是头,第二个数组是项目。如果头[0],那么它将合并项目[0]直到项目[5]。如果是[1],那么它将与项目[6]合并,直到项目[11]。如果是[3],它将与[12]项合并,直到项[17]等等。任何帮助先生?我想它的动态先生.. – kroseva

回答

1

使用,因为你正在试图基于第二阵列的关键数合并阵列以下几点:

foreach($second_array as $key => $value){ 
    if($key >= 0 && $key <= 5){ 
     $new_array[$key] = array_merge($second_array[$key], $first_array[0]); 
    } 
    if($key >= 6 && $key <= 11){ 
     $new_array[$key] = array_merge($second_array[$key], $first_array[1]); 
    } 
    //etc....... 
} 
+0

就像我在底部的帖子所说,这是我从动态多领域得到的两个数组(我没有显示完整的代码,因为我害怕它会花费很长的词)。所以,基本上,我有多个字段形式的JavaScript&html,我想通过它的值传递给数组与PHP。所以我可以在屏幕上显示它或将其插入到数据库。比方说,第一个数组是头,第二个数组是项目。如果头[0],那么它将合并项目[0]直到项目[5]。如果是[1],那么它将与项目[6]合并,直到项目[11]。如果是[3],它将与[12]项合并,直到项[17]等等。任何帮助先生? – kroseva

+0

@kroseva尝试更新的代码AMIGO –

+0

以上代码满足我的需求先生:)但如何使其动态FO循环条件$键(//等等....我需要它动态的)任何想法,解先生? – kroseva

1

尝试像

$arr_cnt = count($arr1); 
for($i = 0 ; $i < $arr_cnt ; $i++) { 

    foreach($arr1[$i] as $key1 => $value1) {  
     $new_arr[$i][$key1] = $value1; 
    } 
    foreach($arr2[$i] as $key2 => $value2) {  
     $new_arr[$i][$key2] = $value2; 
    } 
} 
print_r($new_arr); 
+0

我试试你的代码,但它不工作,给我我想要的输出.. – kroseva

+0

现在就来试试我的编辑....有点困惑 – Gautam3164

+0

您是否尝试过用它..? – Gautam3164

1
$outputArray = array(); 
foreach ($firstArray as $location) { 
    foreach ($secondArray as $option) { 
     $outputArray[] = array_merge($location,$option); 
    } 
} 
+0

我尝试上面的代码,但不工作我所需要的。所以,我基本上都是由多个场形状的JavaScript和HTML,我想通过它的值与PHP阵列。所以我可以在屏幕上显示它或将其插入到数据库。比方说,第一个数组是头,第二个数组是项目。如果头[0],那么它将合并项目[0]直到项目[5]。如果是[1],那么它将与项目[6]合并,直到项目[11]。如果是[3],它将与[12]项合并,直到项[17]等等。任何帮助先生? – kroseva