Depois de mais de 25 pesquisas Stack Overflow e mais de uma hora (para o que pensei que seria uma resposta simples), devo jogar a toalha e perguntar. Tudo o que quero fazer é adicionar elementos adicionais a objetos existentes em um array a partir do conteúdo de outro array com o mesmo comprimento.
Eu tentei (de várias postagens do SO) as seguintes abordagens:
for ($i = 0; $i <= 3; $i++) {
array_push($upper_lower[$i], $candidate_results[$i]);
}
$output = array_intersect($upper_lower, $candidate_results);
$output = $upper_lower+$candidate_results;
array_push($upper_lower, ...$candidate_results);
... e não recebi erros, mas o resultado sempre foi diferente do que eu preciso. Principalmente, os vários métodos retornaram o segundo array anexado ao END do primeiro array, mas alguns adicionaram o segundo array ao primeiro corretamente, mas deixaram o novo elemento em seu próprio objeto (por exemplo, {"E_Jones": 6}) (novamente, não o que eu quero).
Aqui está Array1:
$upper_lower = [
{
"factor": "Factor1",
"Upper_Boundary": 8,
"Lower_Boundary": 5,
"D_Allen": 8
},
{
"factor": "Factor2",
"Upper_Boundary": 7,
"Lower_Boundary": 4,
"D_Allen": 4
},
{
"factor": "Factor3",
"Upper_Boundary": 9,
"Lower_Boundary": 7,
"D_Allen": 7
},
{
"factor": "Factor4",
"Upper_Boundary": 8,
"Lower_Boundary": 6,
"D_Allen": 8
}
]
Aqui está Array2:
$candidate_results = [
{
"E_Jones": 5
},
{
"E_Jones": 9
},
{
"E_Jones": 3
},
{
"E_Jones": 6
}
]
Eu quero o seguinte das matrizes de exemplo:
$combinedarrays = [
{
"factor": "Factor1",
"Upper_Boundary": 8,
"Lower_Boundary": 5,
"D_Allen": 8,
"E_Jones": 5
},
{
"factor": "Factor2",
"Upper_Boundary": 7,
"Lower_Boundary": 4,
"D_Allen": 4,
"E_Jones": 9
},
{
"factor": "Factor3",
"Upper_Boundary": 9,
"Lower_Boundary": 7,
"D_Allen": 7,
"E_Jones": 3
},
{
"factor": "Factor4",
"Upper_Boundary": 8,
"Lower_Boundary": 6,
"D_Allen": 8,
"E_Jones": 6
}
]
Uma maneira fácil de fazer isso:
array_key_first
obtém aE_Jones
chave dos sub-arrays de seu segundo array (assumindo que nem sempre foi o mesmo valor estático, mas pode ser dinâmico) - que você precisa definir o valor sob essa chave, em seu primeiro array.(Se as matrizes internas em sua segunda matriz puderem conter mais de uma entrada que você deseja adicionar - você terá que fazer um loop sobre elas, em vez de acessar apenas a primeira.)