On Sat, May 7, 2022 at 11:53 PM Aleksander Machniak <a...@alec.pl> wrote:
> > What happens if you pass FALSE to such an argument? int(0). The same > would happen with NULL. > > The thing that everyone seems to be glossing over with these coercion examples is that in order to have any scalar value, it must be explicitly set *somewhere*. That might be inside an internal function with a pass-by-ref, it might be on a regular old assignment line, it might be as the result of a function return... but somewhere the scalar must be set to that variable. This is not the case with null. If you use the unset() function on a variable for example, it will var_dump as null *and* it will pass an is_null() check *and* it will pass a $var === null *and* it will return false for an isset() check. Null loses these qualities if it is cast to *any* scalar. See: https://3v4l.org/lUcVV False being cast to int(0) at least doesn't change whether or not it will return true or false for isset(). Null fundamentally has the meaning that a variable is uninitialized, no matter what other ways a program happens to use it. Jordan