Quand on débute en PHP (ou même après !), on rencontre souvent plusieurs manières de faire la même chose. Un exemple classique : vérifier si un tableau n’est pas vide. Deux syntaxes reviennent régulièrement :

if (count($array) > 0) {
    // le tableau n'est pas vide
}

ou bien

if ([] !== $array) {
    // le tableau n'est pas vide
}

Mais alors… laquelle est la meilleure ? Pourquoi certains développeurs expérimentés préfèrent la deuxième ? Explorons ça ensemble.

Performance : éviter une fonction inutile

count() est une fonction. Même si elle est rapide, elle fait un travail supplémentaire :
Elle va compter le nombre d’éléments dans le tableau.
Ce comptage peut être coûteux sur des très gros tableaux ou dans des boucles très fréquentes.
Avec [] !== $array, on ne compte rien : on compare simplement le contenu du tableau avec un tableau vide. C’est immédiat, sans calcul.
Conclusion : [] !== $array est plus performant, surtout dans du code critique.

Lisibilité et intention claire

count($array) > 0 dit : « Je veux savoir combien d’éléments il y a ».

Mais dans beaucoup de cas, tu ne veux pas savoir combien, tu veux juste savoir s’il y en a. Et pour ça, [] !== $array est plus explicite : « est-ce que ce tableau n’est pas vide ? ».
C’est une question de clarté de l’intention.

Moins de risques avec des objets ou types inattendus

Imaginons que $array ne soit pas un tableau, mais une instance de Countable. Dans ce cas, count($array) fonctionne mais peut produire des résultats inattendus ou déclencher une erreur selon le contexte. Avec [] !== $array, tu fais une comparaison stricte.
C’est donc plus sûr pour éviter des comportements ambigus.

Bonne habitude pour le typage strict

En PHP moderne (surtout avec PHP 8+), on favorise de plus en plus le typage strict. Comparer directement avec [] respecte ce principe : tu compares deux tableaux.
Utiliser count() est plus permissif : PHP va essayer de s’en sortir même si la variable n’est pas ce que tu attends. C’est pratique… mais risqué.