для начала я следующие объекты массива (идентификатор, Foo и бар является результатом запроса к базе данных и должен рассматриваться как переменный объект ->id
)Переопределение массива. Могу ли я сделать это лучше?
array([0] => array([id] => 1, [foo] => 'a'), [1] => array([id] => 2, [foo] => 'b')
и
array([0] => array([id] => 1, [bar] => 'b'), [1] => array([id] => 2, [bar] => 'a')
Я хочу создать один новый массив с идентификатором столбца в качестве ключа
array([1] => array([foo] => 'a', [bar] => 'b'), [2] => array([foo] => 'b', [bar] => 'a')
Я использовал следующие строки кода для создания нужного массива:
foreach($array1 as $row1) {
$newArray1[$row1->id] = $row1;
}
foreach($array2 as $row2) {
$newArray2[$row2->id] = $row2;
}
foreach($array2 as $key => row3) { //array 2 is always longer or equal to array 1
$result[$key]['bar'] = $newArray2[$key]->bar;
if (isset($newArray1[$key])) {
$result[$key]['foo'] = $newArray1[$key]->foo;
} else {
$result[$key]['bar'] = 0;
}
}
Я думаю, что это можно сделать намного проще. Так ли это, если да, как?
Намного проще, чем эти 7 строк тривиального кода (примечание: код был не долго после того, как изменился Я поставил свой комментарий)? Фактически вы не могли бы использовать промежуточный массив и напрямую заполнять '$ result' в первых двух циклах – zerkms
, не существует ли что-то вроде array_merge, которое могло бы это сделать? – AgeDeO
Если была функция 'array_merge_exactly_like_AgeDeO_needs()', тогда да – zerkms