如何将两个具有相同键的数组组合在一起?

戈特利布·诺施纳贝尔(Gottlieb Notschnabel)

我有两个数组

第一个数组

[0] => array('date' => "2013-11-26", 'value' => "2")
[1] => array('date' => "2013-11-24", 'value' => "6")
# Note there is no entry for "2013-11-25"

第二个数组

[0] => array('date' => "2013-11-26", 'value' => "null")
[1] => array('date' => "2013-11-25", 'value' => "null")
[2] => array('date' => "2013-11-24", 'value' => "null")

我想以一种方式组合它们,以使第二个数组中的所有条目都从第一个数组中获取value(如果存在)。因此,所需的输出如下。

所需的输出

[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'];
        }
    }
}

但是,还有没有更有效的方法来执行此操作,例如,管理此类操作的本机PHP函数?

mpapec

数组是否需要按日期排序?

使用简单的foreach https://eval.in/73533

$result = $s = array();
foreach (array_merge($a1, $a2) as $v) {

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

}

array_filter()关闭过滤https://eval.in/73523

$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"] ]++;
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将两个具有不同行大小的数据框组合在一起?

如何将两个用于名称和值的数组组合在一起以在php中并排对齐

AnguarJS / javascript将长度相同的两个数组组合在一起

如何将多个具有相同的键和列表作为值的地图组合在一起

如何在Python中将两个具有相同索引的Series组合在一起?

如何将两个通用队列组合在一起?

如何返回将两个函数与两个参数组合在一起的函数

两个具有几乎相同操作的实体是否应该组合在一起?

Lodash或将两个对象数组与匹配键组合在一起的最佳方法

如何将对象的 JSON 数组组合在一起

如何将两个SVG路径组合在一起(无空格)

如何将两个SQL查询与不同的条件组合在一起?

如何将两个查询和订单数据组合在一起

熊猫如何将具有复杂规则/条件的两行组合在一起

如何将这两个查询结合在一起?(MySQL)

如何使用 plot_grid() 将两个图组合在一起在“cowplot”中具有单个网格背景?在 R 语言中

合并两个具有Employee不同属性的数组列表以创建一个新的数组列表,将两个数组列表的属性组合在一起

熊猫:通过选择值将具有相同列的两个数据框组合在一起

如何将不同形状的np数组组合在一起并按行分开

将两个SQL结果组合在一起以形成一个具有不同列名的结果集

将具有相同类别的产品组合在一起

将两个查询组合在一起以形成月份计数

将两个不同的表组合在一起进行查询

将两个或多个线程组合在一起

将两个IQueryable组合在一起不起作用

将两个 -filter_complex 命令组合在一起

Python 以字母开头的行,将两个 for 循环组合在一起?

Groovy / Grails:如何将多个键组合在一起?

将两个具有不同位置的SQL查询组合在一起并返回唯一的行