0

このように2つの配列を組み合わせたい:

1番目の配列:

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

2番目の配列:

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

私はこのような結果を得たいです:

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

2番目のアレイは柔軟です。キーと値を反転できます。

またはそれ以上:

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

私は簡単な解決策があるに違いないことを知っています。何か案は?

4

2 に答える 2

3
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関数を使用するだけの正しい方法は考えられません。

于 2012-04-23T18:37:48.773 に答える
0
   $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;
   }
于 2012-04-23T18:36:39.977 に答える