Мне кажется ты изобретаешь велосипед.
array_walk_recursive() посмотри документацию, там довольно понятно расписано как использовать. А то что ты пишешь - пародия на эту функцию. Первый аргумент - массив, вторым должна быть твоя функция, которая делает то что тебе нужно для каждого элемента массива.
UPD. Посидел подумал, в твоем случае,
чтобы из этого$array = [
['foo'],
['bar'],
'baz'
];
Получить это$array = [
[
'foo',
'a' => 'b'
],
[
'bar',
'a' => 'b'
],
'baz'
];
Рекурсия тут вообще не нужна.
<?php
echo "Что есть:\r\n";
$array = [
['foo'],
['bar'],
'baz'
];
var_dump($arr);
echo "----------------------------------------------\r\n";
echo "Что хотим получить:\r\n";
var_dump([
[
'foo',
'a' => 'b'
],
[
'bar',
'a' => 'b'
],
'baz'
]);
echo "----------------------------------------------\r\n";
echo "Процесс:\r\n";
$add_array = [
'a' => 'b'
];
foreach ($array as $key => $value){
if(is_array($value)){
$array[$key] += $add_array;
}
}
echo "----------------------------------------------\r\n";
echo "Полученный результат:\r\n";
var_dump($array);
Если нужна именно функция, то просто оберни
foreach