2013-07-24 171 views
0

你好只是一個新手在PHP中,需要你的幫助很差。我實際上有兩個陣列,我希望它合併。結合兩個陣列與相同的密鑰在php

['a1']=>array(
    [0]=>200, 
    [1]=>300, 
    [2]=>300 
    ), 

    ['a2']=>array(
    [0]=>100, 
    [1]=>600, 
    [2]=>200 
    ) 

    ['a1']=>array(
    [0]=>gen, 
    [1]=>gen2, 
    [2]=>gen 
     ), 
    ['a2']=>array(
    [0]=>gen2, 
    [1]=>gen3, 
    [2]=>gen3 
     ) 

我希望我的輸出是:

[a1]=>(
     [gen]=>200, 
     [gen2]=>300, 
     [gen]=>300, 
     ) 
    [a2]=>(
     [gen2]=>100, 
     [gen3]=>600, 
     [gen3]=>200, 
     ) 

非常感謝您的幫助

我試試這個代碼,並能得到我的願望的結果除非有一個重複,它不顯示重複的值,或者如果鍵有重複的選擇,它必須添加該值。

再次感謝您的幫助。

<?php 
$array1 = array(a1=>array(200,300,300), a2=>array(100,600,200)); 
$array2 = array(a1=>array('gen','gen2','gen'), a2=>array('gen2','gen3','gen3')); 
$result = array(); 
foreach($array1 as $k => $v) { 
$result[$k] = array_combine($array2[$k], $v); 
} 

print_r($result); 
?> 
+1

@DevlshOne,他承認自己是一個新手,讓我們給他一些鬆懈。 –

回答

1

您應該使用array_combine函數。

$array1 = array(200,300,300); 
$array2 = array('gen','gen2','gen3'); 

$result = array_combine($array2, $array1); // $result will be your desired array 

你可以結合這個與foreach完成這項工作。

<?php 
$array1 = array(a1=>array(200,300,300), a2=>array(100,600,200)); 
$array2 = array(a1=>array('gen','gen2','gen3'), a2=>array('gen2','gen3','gen7')); 
$result = array(); 
foreach($array1 as $k => $v) { 
    $result[$k] = array_combine($array2[$k], $v); 
} 
print_r($result); 
?> 
+0

只是後續問題,如果我想要顯示的密鑰中存在重複內容,那麼它會覆蓋重複的密鑰。我忘了這是我無法使用組合功能的主要原因。再次感謝 –

2

使用array_combine()

$keys = array(0=>'gen', 1=>'gen2', 2=>'gen3'); 
$values = array(0=>200, 1=>300, 2=>300); 
$a1 = array_combine($keys, $values); 

注:我重建你的陣列爲您提供的print_r()輸出。但是這應該讓你開始。

+0

只是一個後續問題,如果我想要顯示的密鑰中存在重複項,那麼該怎麼辦,因爲它只是覆蓋了重複密鑰。再次感謝 –

0

這是我的工作例如:

$arr1 = array(
    (0)=>200, 
    (1)=>300, 
    (2)=>300 
    ); 

$arr2=array(
    (0)=>100, 
    (1)=>600, 
    (2)=>200 
    ); 

    $a1=array(
    (0)=>'gen', 
    (1)=>'gen2', 
    (2)=>'gen3' 
     ); 
    $a2=array(
    (0)=>'gen2', 
    (1)=>'gen3', 
    (2)=>'gen7' 
     ); 


var_dump(array_combine($a1, $arr1)); 

測試在我的本地。

+0

只是一個後續問題,如果我想要顯示的密鑰中存在重複項,那麼它會覆蓋重複密鑰。我忘了這是我無法使用組合功能的主要原因。再次感謝 –

+0

我會查找你的答案....稍等一下.. – Hackerman

+0

數組的全部要點是有唯一的鍵......對不起 – Hackerman