In PHP, I want to check if a variable has not been set/defined, where setting a variable NULL is considered set/defined.
I'm aware everything here: http://php.net/manual/en/types.comparisons.php including isset(), empty(), and is_null(). None of these appear to be what I'm looking for. Consider the following example:
<?php
$myNull = null;
echo 'isset($myNull): "'.isset($myNull).'"<br />';
echo '$myNull value = "'.$myNull . '"<br />';
echo "<br />";
echo 'isset($myUndefined): "'.isset($myUndefined).'"<br />';
echo '$myUndefined value = "'.$myUndefined . '"<br />';
?>
This example outputs something like:
isset($myNull): ""
$myNull value = ""
isset($myUndefined): ""
Notice: Undefined variable: myUndefined in C:\wamp\www\plm\temp4.php on line 9
$myUndefined value = ""
I want to know if a variable is Undefined as it says above in the notice. I want a function, call it "is_undefined", where
$myNull = null;
is_undefined($myNull); // is false
is_undefined($myUndefined); // is true
Anyone? Thanks in advance.
If you want an is_undefined function I would prefer not to work with arrays so I would do this:
So when you
echo isset($myNull);
it converts the boolean(true) to "". thats why the value is blank. If you want to see it on the screen you can dovar_dump(isset($myNull));
that will display if it's true or false.Also you have an echo of $myUndefined but it's not set yet so that's why you get a warning. What you want to do is:
Here is a brief overview of isset() vs. is_null() vs. empty()
I haven´t used it yet - but I think that "get_defined_vars" should be worth a look... http://php.net/manual/en/function.get-defined-vars.php
I would give it a try and dump the result.
Yes, just like Mr. Jonathan mentioned above, we could use array_key_exists() + $GLOBALS rather than get_defined_vars() to identify Undefined variable to null
I think that get_defined_vars is a good candidate for such job:
Should do what you expect.
If you work on a global context, you can also use:
If you are using OOP then use overloading
__isset()
this function will execute when you are trying to access a variable that is not defined anywhere. example:Thus, will avoid any error message or notice related to undefined variable
You can use
compact()
for this too, if the variable you give it isn't in the symbol table it returns an empty array, otherwise an array containing the variable name/value pair, just cast the result to a boolean