Php 如何使用相同的键组合两个数组?

Php 如何使用相同的键组合两个数组?,php,arrays,Php,Arrays,我有两个数组 第一阵列 第二阵列 我想以一种方式将它们组合起来,第二个数组中的所有条目从第一个数组中获取值,如果存在条目的话。因此,期望的输出如下所示 期望输出 我看到了一种方法,可以在第二个数组中循环,然后在第一个数组中执行innerloop以检查匹配的条目: foreach($second as &$s) { foreach($first as $f) { if($f['date'] == $s['date']) { $s['value

我有两个数组

第一阵列 第二阵列 我想以一种方式将它们组合起来,第二个数组中的所有条目从第一个数组中获取
值,如果存在条目的话。因此,期望的输出如下所示

期望输出 我看到了一种方法,可以在第二个数组中循环,然后在第一个数组中执行innerloop以检查匹配的条目:

foreach($second as &$s) {
    foreach($first as $f) {
        if($f['date'] == $s['date']) {
            $s['value'] = $f['value'];
        }
    }
}

但是否没有更有效的方法来实现这一点,例如,一个本机PHP函数来管理这样的操作?

数组是否需要按日期排序

使用直接foreach

或者
array\u filter()
带有用于过滤的闭包


您的日期是否唯一?如果是这样,您可以将第一个数组转换为
日期
=>
格式的数组,这样以后查找给定日期的值会更快。是的,
日期
是唯一的。我以前有过这种结构(
date
is array key),但不得不改为上面提到的数组结构。循环应该很好,除非处理大量数据,否则我看不到任何性能问题。Hi,两个数组都已排序。排序顺序不应该改变。你的方法看起来很有趣,我来试试!在我的例子中不起作用,因为我需要排序顺序(如果我现在运行另一个例程进行排序,它不会比我问题中的方法短)。但是+1并在这里接受,因为它解决了问题,而排序在我的问题中并没有被定义为需求。
[0] => array('date' => "2013-11-26", 'value' => "null")
[1] => array('date' => "2013-11-25", 'value' => "null")
[2] => array('date' => "2013-11-24", 'value' => "null")
[0] => array('date' => "2013-11-26", 'value' => "2")
[1] => array('date' => "2013-11-25", 'value' => "null")
[2] => array('date' => "2013-11-24", 'value' => "6")
foreach($second as &$s) {
    foreach($first as $f) {
        if($f['date'] == $s['date']) {
            $s['value'] = $f['value'];
        }
    }
}
$result = $s = array();
foreach (array_merge($a1, $a2) as $v) {

  if (! $s[ $v["date"] ]++) $result[]= $v;

}
$a1 = array(
  0 => array('date' => "2013-11-26", 'value' => "2"),
  1 => array('date' => "2013-11-24", 'value' => "6"),
);
$a2 = array(
  0 => array('date' => "2013-11-26", 'value' => "null"),
  1 => array('date' => "2013-11-25", 'value' => "null"),
  2 => array('date' => "2013-11-24", 'value' => "null"),
);

$s = array();
$result = array_filter(array_merge($a1, $a2), function($v) use (&$s) {

  return !$s[ $v["date"] ]++;
});