Склоняем числительные на PHP 7.4

Небольшая зарисовка на тему как сделать склонение числительных на PHP 7.4 используя новый синтаксис лямбд:

<?php

function create_plural(array $a): callable
{
    return fn(int $n): string => sprintf(
        $a[
            (20 > ($n %=100) && $n > 4)
                ? 2
                : [2,0,1,1,1,2][ (($n %= 10) < 5) ? $n : 5]
        ], $n
    );
}


$plural_day = create_plural(['%s день','%s дня','%s дней']);

var_dump(
	$plural_day(1), // 1 день
	$plural_day(2), // 2 дня
	$plural_day(5)  // 5 дней
);