Вы можете добавить новый параметр в конце, который возвращает true, только если номер элемента, на котором вы находитесь, совпадает с общим количеством элементов.
Если честно, эта функция меня немного смущает, потому что, кажется, не волнует, является ли первый уровень первым и последним. Поэтому я предполагаю, что эта функция заботится только о последнем элементе, если у него есть родительский элемент.
function my_function($a, $b, $level=0,$isLast=false){
if($isLast){
// Do something special on last item
}
$items = get_some_items($a, $b);
$total = count($items);
$c=0;
foreach($items as $item){
$c++;
my_function($a, $item, $level++,($c==$total));
}
// Additional check maybe to see if the first ever call is also the last?
if($total==0 && $level<1){
// Do something special on last item?
// This could be at the top in the same IF statement
// as the $isLast check (preferred) if things were moved around.
}
}