如何在PHP中的类似键上组合数组?

时间:2011-12-14 01:38:34

标签: php arrays array-merge

我有这种情况$test

               $months = Array
                    (
                        [3] => 7.56
                        [7] => 11.94
                        [1] => 6.90
                        [17] => 6.90
                        [6] => 6.90
                        [4] => 19.50
                    )
               $total = Array
                    (
                        [31] => 10
                        [17] => 4
                    )

我想以这样的方式将它们组合起来,以便得到$x = array([17] => 6.90)

基本上将来自values的{​​{1}}和来自$months的{​​{1}}放在一起keys = $total

任何想法?

感谢

4 个答案:

答案 0 :(得分:2)

您应该尝试使用array_intersect_keys(doc

来自doc:

<?php
    $array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
    $array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

    var_dump(array_intersect_key($array1, $array2));
?>

输出

array(2) {
  ["blue"]=>
  int(1)
  ["green"]=>
  int(3)
}

“array_intersect_key()返回一个数组,其中包含array1的所有条目,其中包含所有参数中都存在的键。”

因此,如果你想要第一个数组的“值”,这就是解决方案。

答案 1 :(得分:1)

$x = array();
foreach($total as $key => $value)
{
  if (array_key_exists($key, $months))
  {
    $x[$key] = $months[$key];
  }
}

答案 2 :(得分:0)

foreach ($total as $k => $v) if (isset($months[$k])) $x[$k] = $months[$k];

答案 3 :(得分:0)

如果我没弄错的话,这可能是阵列合并的一项工作。

$x = array_merge($months,$total);

http://php.net/manual/en/function.array-merge.php