PHP - как присвоить значение в массиве
Array
(
[0] => Array
(
[manufacturer] => KNECHT
[article] => KL2
[name] => Фильтр топл.AUDI/VW/SEAT
[ident] =>
)
[1] => Array
(
[manufacturer] => MAHLE
[article] => KL2
[name] => Топливный фильтр
[ident] =>
)
[2] => Array
(
[manufacturer] => METAL LEVE
[article] => KL2
[name] => Топливный фильтр
[ident] =>
)
[3] => Array
(
[manufacturer] => KNECHT
[article] => KL2
[name] =>
[ident] => 25446040
)
[4] => Array
(
[manufacturer] => MAHLE
[article] => KL2
[name] =>
[ident] => 47847542
)
[5] => Array
(
[manufacturer] => PATRON
[article] => KL2
[name] =>
[ident] => 147622787
)
[6] => Array
(
[manufacturer] => VAG
[article] => KL2
[name] =>
[ident] => 136414413
)
)
Как лучше собрать новый массив, в котором если совпадают значения ключей [manufacturer] например [0] [manufacturer]=>KNECHT и [3] [manufacturer]=>KNECHT но при этом в [0] [manufacturer]=>KNECHT не заполнено значение ключа [ident] => ,присвоить значение [ident] => 25446040 из массива [3]. Т.е. если manufacturer совпадают то присвоить такой же ident.
Ответы (1 шт):
Попробуй как-нибудь так. Можно сделать лучше, но это первое, что пришло в голову :)
Для присвоения значений в новый массив просто скопируем существующий и его отредачим. Ну и в цикле уже становится без разницы по какому массиву пробегаться по $newArray или по $firstArray. Главное чтобы присвоение было в $newArray.
$newArray = $firstArray;
$manufacturers = [];
$idents = [];
foreach ($firstArray as $key=>$item){
if(in_array($item['manufacturer'], $manufacturers)){
$keyVar = array_search($item['manufacturer'], $manufacturers);
if(empty($idents[$keyVar])){
$newArray[$keyVar]['ident'] = $item['ident'];
}
}else{
$manufacturers[$key] = $item['manufacturer'];
$idents[$key] = $item['ident'];
}
}