0

我有这种情况$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)

基本上把valuesfrom$monthskeysfrom $totalwhere $months.key=$total.key

有任何想法吗?

谢谢

4

4 回答 4

2

你应该试试 array_intersect_keys ( 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 的所有条目,这些条目具有所有参数中都存在的键。”

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

于 2011-12-14T02:04:01.167 回答
1
$x = array();
foreach($total as $key => $value)
{
  if (array_key_exists($key, $months))
  {
    $x[$key] = $months[$key];
  }
}
于 2011-12-14T01:43:03.827 回答
0
foreach ($total as $k => $v) if (isset($months[$k])) $x[$k] = $months[$k];
于 2011-12-14T01:42:49.297 回答
0

如果我没记错的话,这可能是数组合并的工作。

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

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

于 2011-12-14T01:46:31.783 回答