Une comparaison non transitive
<?php
var_dump('0' == 0);
var_dump('0' == false);
var_dump(0 == false);
// Non transifive
var_dump('0' == null);
var_dump(0 == null);
Parfois, je crois sincèrement avoir saisi toute l’étrange sémantique de PHP, et puis je découvre quelque chose de si simple que ça brise une hypothèse que j’avais sur le langage.
Je savais que NAN == X peut retourner true.
Je savais que les opérateurs de comparaison ne sont pas transitifs.
Je savais évidemment que "0" == 0 et "0" == false retournent true.
Et pourtant, il était naïf de ma part de croire que tous les cas de X == false donneraient la même réponse que X == null.
Comme quoi, "0" == null est false.
See Also
- Original toot
- Non-transitive comparison [Try me]
PHP Features
Last updated: 11 October 2026