У меня есть два массива массивов. здесь является демонстрация двух массивов для простоты: $ строк массива:слияние двух массивов с разными данными в один, используя php
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))
Теперь я хочу, чтобы объединить эти два массива в один таким образом, что я в конечном итоге с followwing:
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;
}
}
это работает, но это не дало бы мне массив, когда знак существует в переопределяет бит не в строках. в этом случае оба правильных и отрицаемых должны стать 0 – RazorHead