А внутри нас ожидает сюрприз...

Что же выведется на экран, если 3 раза вызвать функцию, объявив внутри самой функции статическую функцию с таким же названием, что и передаваемый параметр?

<?
function howMany($v){
    static 
$v;    // redefine variable
    
echo $v;
    
$v++;
}
echo 
howMany(0), howMany(3), howMany(5);    // 12
?>

Что же произошло?
Все очень просто, мы передаем переменную внутрь функции, дальше она уничтожается и создается статическая переменная.
При первом вызове статическая переменная пустая, поэтому мы ничего не выводим. После чего увеличиваем статическую переменную на единицу.
При следующем вызове выведется 1 и снова увеличиваем статическую переменную на единицу.
И в последний раз все повторяется. Поэтому и получаем в итоге 1 и 2 на выводе.