I want to be able to distinguish between existing query string parameters set to null, and missing parameters. So the parts of the question are:
- How do I check if a parameter exists in the query string
- What's the esta开发者_StackOverflow社区blished method for passing a null value in a query string? (e.g. param=null or param=(nothing) )
Thanks
Use isset()
and empty()
if (isset($_REQUEST['param']))
{
// param was set in the query string
if(empty($_REQUEST['param']))
{
// query string had param set to nothing ie ?param=¶m2=something
}
}
Or use array_key_exists
:
if(array_key_exists("myParam", $_GET)) {
}
I've never been keen on 'conventions' for passing empty values to the server - I'm used to testing for the presence of variables, and then trimming them and testing for emptiness, for example.
Values stored in $_GET
and $_POST
can only be strings or arrays, unless explicitly set at run-time. If you have a query string of query=string
the value is "string"
if you instead use: query=null
the value will be "null"
. Note that it is therefor a string.
If you send: query=
, the value will be ""
or the empty string. Take note of the differences between isset
and empty
. isset
will be true if the value is not null, whereas empty
will be true when the value evaluates to false
. Therefor ""
will be true for both isset
and empty
.
If you just want to check if a query string parameter was set to the string value of "null"
, you can simply check $_GET['query']=='null'
(you may want to adjust the case of the characters before the check)
With one if statement instead of two:
if ((isset($_REQUEST['name'])) && (!empty($_REQUEST['name'])))
{
$name= $_REQUEST['name'];
}
精彩评论