2013-07-24 93 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