0

私は配列の2つの配列を持っています。簡単にするために、2 つの配列のデモを次に示します。 $rows 配列:

Array ( [0] => Array ( [Badge] => Adrian [Denied] => 2 [Correct] => 9 ) 
        [1] => Array ( [Badge] => Adriann [Denied] => 3 [Correct] => 6 ) 
        [2] => Array ( [Badge] => newAd [Denied] => 0 [Correct] => 4 ) ) 

および $overrides_array:

Array ( [0] => Array ( [Badge] => Adrian [Override] => 2 ) 
        [1] => Array ( [Badge] => newAd [Override] => 1 ) 
        [2] => Array ( [Badge] => AntonRapid [Override] => 1 ) )

ここで、これら 2 つの配列を 1 つにマージして、最終的に次のようにしたいと考えています。

Array ( [0] => Array ( [Badge] => Adrian [Denied] => 2 [Correct] => 9 [Override] => 2 ) 
        [1] => Array ( [Badge] => Adriann [Denied] => 3 [Correct] => 6 [Override] => 0 ) 
        [2] => Array ( [Badge] => newAd [Denied] => 0 [Correct] => 4 [Override] => 1 ) 
        [2] => Array ( [Badge] => AntonRapid [Denied] => 0 [Correct] => 0 [Override] => 1 )
      )

これまでのところ、次の醜いコードを思いつきましたが、一部のバッジでは機能しません。

$result_array = array();
    $counter = 0;
    foreach ($rows as $row){
        //$counter = 0;
        if(count($override_array) > 0){
            foreach($override_array as $override){
              if($row['Badge'] == $override['Badge'] ){

                  $row = $this->array_push_assoc($row, 'Override', $override['Override']);
                  unset($override_array[$counter]);
                  $counter++;
              }


          }
        }
        else $row=$this->array_push_assoc($row, 'Override', '0');

        $result_array[]=$row;

    }
    $roww = array();
    //print_r($override_array);
    if(count($override_array) > 0){
        foreach ($override_array as $override){
            $roww = $this->array_push_assoc($roww, 'Override', $override['Override']);
            $roww = $this->array_push_assoc($roww, 'badge', $override['Badge']);
            $roww = $this->array_push_assoc($roww, 'Correct', '0');
            $roww = $this->array_push_assoc($roww, 'Denied', '0');
            $result_array[]=$roww;
        }
    }
4

2 に答える 2