Как заменить ключи подмассива на значения из другого подмассива PHP?
Есть массив:
$array = [
0 => ['a1' => 'value', 'a2' => 'value', 'a3' => 'value'],
1 => ['a4' => 'value', 'a5' => 'value', 'a6' => 'value'],
2 => ['a0' => 'value', 'a1' => 'value', 'a3' => 'value'],
3 => ['a10' => 'value', 'a20' => 'value', 'a33' => 'value'],
];
Где 'value' - любое значение
И есть маппинг для ключей из первого массива
$arrayMap = [
0 => ['id' => '1', 'field_name' => 'field_name_1'],
1 => ['id' => '2', 'field_name' => 'field_name_2'],
2 => ['id' => '3', 'field_name' => 'field_name_3'],
3 => ['id' => '4', 'field_name' => 'field_name_4'],
];
где значение id 1, 2, 3, 4 и т.д. это a1, a2, a3, a4 и т.д. ("a" это префикс ключей из первого массива)
Нужно получить массив
[
0 => ['field_name_1' => 'value', 'field_name_2' => 'value', 'field_name_3' => 'value'],
1 => ['field_name_4' => 'value', 'field_name_5' => 'value', 'field_name_6' => 'value'],
2 => ['field_name_0' => 'value', 'field_name_1' => 'value', 'field_name_3' => 'value'],
3 => ['field_name_10' => 'value', 'field_name_20' => 'value', 'field_name_33' => 'value'],
];
Ответы (1 шт):
Автор решения: teran
→ Ссылка
сначала преобразуйте $arrayMap добавив префикс (или мб изначально можете его таким сделать)
$keys = [];
foreach($arrayMaps as $x){
$keys["a{$x['id']}"] = $x['field_name'];
}
будет у вас вида ["a1" => 'field_name1', "a2" => ...]
дальше определяем $result = [] и прогоняем цикл
foreach($array as $values){
$data = [];
foreach($values as $a => $v){
$data[ $keys[$a] ][] = $v;
}
$result[] = $data;
}