Объединение двух массивов с заменой значений на php

Подскажите как объединить два массива

$arr1 = [0 => 'Один', 1 => 'Два', 2 => 'Три']; //где ключи это id из таблицы БД, которые могут меняться, а значения ключей не меняются

и

$arr2 = ['One','Two','Three']; //где элементы это просто текст

так, что бы значения ключей первого массива стали ключами нового вложенного массива, а значениями были пара ключ первого массива и значение второго массива

$result = ['Один' => [0 => 'One'], Два => [1 =>'Two'], Три => [2 => 'Three']];

При одинаковых id всё работает

    $arr1 = [0 => 'Один', 1 => 'Два', 2 => 'Три']; 
    $arr2 = [0 => 'One', 1 => 'Two', 2 => 'Three'];
    $res = $arr1 + $arr2;
    foreach($arr1 as $i=>$k){
       $result[$k][$i] = $res[i]
    }
    return $result;

Но если будет так

$arr1 = [10 => 'Один', 11 => 'Два', 12 => 'Три']; 
$arr2 = [0 => 'One', 1 => 'Two', 2 => 'Three'];

То результат не верный.


Ответы (2 шт):

Автор решения: Вадим Александру

Не уверен, что правильно вас понял

$arr1 = [10 => 'Один', 11 => 'Два', 12 => 'Три'];
$arr2 = [0 => 'One', 1 => 'Two', 2 => 'Three'];
$result = [];


foreach ($arr1 as $key => $value) {
  $result[$value][$key] = array_shift($arr2);
}

print_r($result);
→ Ссылка
Автор решения: teran

попарно надо сложить-то или как? array_combine обычно используется для формирования массива по готовым ключам и значениям

$values = array_combine(array_keys($arr1), $arr2);
$result = array_combine($arr1, array_chunk($values,1,true) );
→ Ссылка