Quando queremos contabilizar um array pensamos logo na função count(); porém, esta função contabiliza os índices com valores vazios.
Para contabilizar somente os índices com valores, devemos usar a combinação array_filter() + count().
Veja o exemplo abaixo.
[esporte] => array (
[1] => 'futebol'
[2] => 'natação'
[3] => 'basquetebol'
[4] => 'tênis'
[5] =>
[6] =>
[7] =>
[8] =>
)
$esporte = $_POST['esporte'];
$total = count($esporte);
// resultado: 8
$total = count(array_filter($esporte));
// resultado: 4