Voici une petite astuce pour contourner certains problèmes ou alléger la quantité de code à écrire. Prenons ce tableau :

$days = [
    'monday' => [
        'events' => [],
    ],
    'tuesday' => [
        'events' => [],
    ],
    'wednesday' => [
        'events' => [],
    ],
    'thursday' => [
        'events' => [],
    ],
    'friday' => [
        'events' => [],
    ],
    'saturday' => [
        'events' => [],
    ],
    'sunday' => [
        'events' => [],
    ],
];

Dans la vraie vie, ça pourrait être un tableau contenant les événements de chaque jours de la semaine. Ici, c'est volontairement vide.

Si nous voulions assigner une variable pour savoir s'il y a au moins un événement dans la semaine, il y a cette solution :

$at_least_one_event = !empty(array_filter($days, function ($day) {
    return !empty($day['events']);
}));

La fonction array_filter filtre les éléments d'un tableau grâce à une fonction donnée. Pour chaque jour, on vérifie s'il y a des événements.
Mais sur certaines version de PHP, vous tomberez sur cette erreur :

Fatal error: Can't use function return value in write context in ...

C'est-à-dire que l'on ne peut pas faire $var = empty(array_filter(...));. Idem pour is_null, isset et d'autres.

Pour contourner l'erreur, il suffirait de stocker le résultat de array_filter dans un tableau intermédiaire et de vérifier l'état de ce dernier :

$events = array_filter($days, function ($day) {
    return !empty($day['events']);
});
$at_least_one_event = !empty($events);

C'est plus long, c'est chiant et il y a mieux.

LA solution : tester directement le retour de array_filter :

$at_least_one_event = !!array_filter($days, function ($day) {
    return !empty($day['events']);
});

Notez l'utilisation de !!array_filter(...).

Pour tester si array_filter() est vide : !array_filter(...).
Et donc, pour tester s'il n'est pas vide : !!array_filter(...).

Pour illustrer l'accumulation des points d'exclamation :

var_dump($events);          // array(0) {}
var_dump(empty($events));   // bool(true)
var_dump(!empty($events));  // bool(false)
var_dump(!!$events);        // bool(false)
var_dump(!!!$events);       // bool(true)
var_dump(!!!!$events);      // bool(false)
var_dump(!!!!!$events);     // bool(true)