почему Вы решили использовать array_combine? он создает массив в котором в качестве ключей будут значения из первого аргумента, а в качестве значений массива из второго. И когда Вы будете использовать этот алгоритм с реальными именами - у Вас будут проблемы, например:
$arr1 = array ("Вася", "Вася", "Вася", "Вася");
$arr2 = array ("Петров", "Иванов", "Сидоров", "Пупкин");
array_combine($arr1, $arr2) - в этом случае вернет не 4 записи как Вы ожидаете а одну.
Уж лучше используйте
array_map , например так:
$names = array_map( function ($firstname, $lastname) {
return [
'fisrtname' => $firstname,
'lastname' => $lastname
];
}, $arr1, $arr2));
P.S.: а вообще лучше избежать не нужных движений сразу формировать один массив с фамилиями и именами сразу