基于从另一个数组键结合阵列(Combining arrays based on keys from

2019-10-29 16:26发布

我想两个数组结合起来是这样的:

第一阵列:

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

第二阵:

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

我想要得到的结果是这样的:

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

第二阵列是柔性的。 我可以翻转键和值。

或者更好的是:

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

我知道必须有一个简单的解决方案。 有任何想法吗?

Answer 1:

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函数。



Answer 2:

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

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

   $results = array();

   foreach ($labels as $label => $id) {
       $results[$label] = array_key_exists($id, $values) ? $values[$id] : 0;
   }


文章来源: Combining arrays based on keys from another array
标签: php arrays key