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é.