2013-10-31 220 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