根据另一个数组中的键组合数组 [英] Combining arrays based on keys from another array

查看:84
本文介绍了根据另一个数组中的键组合数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想像这样组合两个数组:

第一个数组:

第二个数组:

我想得到这样的结果:

第二个数组很灵活.我可以翻转键和值.

或更妙的是:

我知道必须有一个简单的解决方案. 有什么想法吗?

解决方案

foreach ($arr1 as $k1 => $v1) {
    $arr1[$k1] = isset($arr2[$v1]) ? $arr2[$v1] : 0;
}

编辑- 这没有明显的循环,尽管我认为这并不是更好,但也许更酷.

$mapped = array_map(function($valFromArr1) use ($arr2) {
    return isset($arr2[$valFromArr1]) ? $arr2[$valFromArr1] : 0;
}, $arr1);

我想不出仅使用纯PHP函数的明智方法.

I want to combine two arrays like this:

1st array:

   array( "ATTENDED"        => 1,
          "TENTATIVE"       => 2,  //
          "REJECTED"        => 3,
          "OUTSTANDING"     => 4,  
          "ACCEPTED"        => 6
        );

2nd Array:

  array ( 1 => 29, 
          4 => 30, 
          6 => 47 
        );

I want to get the results like this:

  array ( 'ATTENDED' => 29, 
          'OUTSTANDING' => 30, 
          'ACCEPTED' => 47
        );

2nd array is flexible. I can flip keys and values.

or better yet:

   array( "ATTENDED"    => 29,
      "TENTATIVE"       => 0,  //
      "REJECTED"        => 0,
      "OUTSTANDING"     => 30,  
      "ACCEPTED"        => 47
     );

I know there must be a simple solution. Any ideas?

解决方案

foreach ($arr1 as $k1 => $v1) {
    $arr1[$k1] = isset($arr2[$v1]) ? $arr2[$v1] : 0;
}

edit- This is without an explicit loop, although I don't think this is really better, but maybe cooler though.

$mapped = array_map(function($valFromArr1) use ($arr2) {
    return isset($arr2[$valFromArr1]) ? $arr2[$valFromArr1] : 0;
}, $arr1);

I can't think of a sane way to just use pure php functions.

这篇关于根据另一个数组中的键组合数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆