Только учусь и мне важно хорошо понимать тот говнокод

Возникли трудности с пониманием рекурсивки, сможете подсказать, все ли я верно понял.
$array = array (
'Товар' => 13,
'Вело' => array (
'Одноколесные' => array (
'(Товар) BMX' => 12,
'(Товар) BMS' => 13),
'Колесики' => 15,
),
);
// Функция отвечает за подсчет кол - ва элементов.
function recursiv ($array, $id = 0) { // Добавляю аргументы $array и id
static $countItems; // Создаю статическую ячейку, для записи значений
if (is_array($array)) { // Проверяю соответствие
foreach ($array as $string) { // Запускаю перебор элементов массива
recursiv ($string, $id); // Создаю рекурсивное погружение, которое будет повторяться при каждой итерации
}
} else {
$countItems += $array; // Записываю значение элемента текущей строки
}
return $countItems; // возвращаю
}
$result = recursiv ($array);
echo $result;
У меня только возникает вопрос, зачем в этом моменте recursiv ($string, $id);
Нужно передавать в качестве аргумента $string.
Объясните кому не сложно, как работает эта маза фака
