Bu cevap, konu sahibi tarafından kabul edilebilir bir cevap olarak işaretlendi.
Bu kullanımlar doğru değil ama sizin paylaştığınız koda bağlı kalırsak şu şekilde yapılabilir.
function calismagunsay($from, $to) {
$calismagunler = [1, 2, 3, 4, 5, 6]; # date format = N (1 = Monday, ...)
$tatiller = ['*-01-01', '*-04-23', '*-05-01', '*-05-19', '*-07-15', '*-08-30', '*-10-29', '2021-05-13', '2021-05-14', '2021-05-15', '2021-07-20', '2021-07-21', '2021-07-22', '2021-07-23']; # variable and fixed holidays
$arefe = ['*-10-28'];
$from = new DateTime($from);
$to = new DateTime($to);
$to->modify('+1 day');
$interval = new DateInterval('P1D');
$periods = new DatePeriod($from, $interval, $to);
$days = 0;
foreach ($periods as $period) {
if (!in_array($period->format('N'), $calismagunler)) continue;
if (in_array($period->format('Y-m-d'), $tatiller)) continue;
if (in_array($period->format('*-m-d'), $tatiller)) continue;
if (in_array($period->format('Y-m-d'), $arefe) OR in_array($period->format('*-m-d'), $arefe)) {
$days = $days + '0.5';
continue;
}
$days++;
}
return $days;
}