Как заменить ключи подмассива на значения из другого подмассива 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;
}
→ Ссылка