在php中将两个数组与相同的键组合在一起

时间:2013-07-24 14:47:23

标签: php arrays multidimensional-array

你好,只是一个新手在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);
?>

4 个答案:

答案 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()输出时重建了数组。但这应该让你开始。

答案 1 :(得分: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);
?>

答案 2 :(得分:0)

在这种情况下,PHP array_combine()会很好用。

$a1 = array(200,300,300);
$a2 = array('gen','gen2','gen3');

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

功能参考:http://www.php.net/manual/en/function.array-combine.php

答案 3 :(得分: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));

在我的本地主机上测试过。