Объединение двух массивов с заменой значений на 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) );