On 1 Sep 2015, at 19:17, Rowan Collins <[email protected]> wrote:
> I'm still not sure how exists() would be anything other than an alias for
> array_key_exists().
I think that is the case as well (ish).
But considering that isset() seems to be the function that is used most of the
time, I want to consider why that is the case.
Before last week, if someone asked me to write some code to see if a variable
(or key) exists, I would have simply used isset() without thinking (this being
a problem if the variable was set to NULL).
Whereas, if I was told to check if the variable was NULL, I would do an "$a ===
NULL" or is_null().
It might just be due to the functions name length or usage, while wanting to
avoid undefined variable notices:
<?php
$search = (isset($_GET['q']) ? $_GET['q'] : '');
$search = (array_key_exists('q', $_GET) ? $_GET['q'] : '');
?>
The second one does also represent the variable in a different way (grep for
"$_GET['q']", where it only appears 3 times in that code).
And the second one does not really check for the existence of $_GET, which in
this case is probably ok.
Craig
On 1 Sep 2015, at 19:17, Rowan Collins <[email protected]> wrote:
> On 01/09/2015 10:29, Craig Francis wrote:
>> Personally I still like the idea of an exists(), because I feel that is how
>> many programmers treat and use the isset() function - simply because they do
>> use NULL as a valid value, and either haven't read the manual, or forget the
>> exception that is mentioned on line 1 (something I've done a couple of
>> times).
>
> I'm still not sure how exists() would be anything other than an alias for
> array_key_exists().
>
> Once again, this is NOT about "using NULL as a valid value"; it's about
> "using a variable's NON-EXISTENCE as a valid state". I think that is the
> fundamental mistake people make - they think the "quirk" is that isset()
> returns false for a null value, when that is the most rational part of it.
> The "quirk" is that you don't get a warning when passing a completely
> undefined variable to isset().
>
> Obviously, that's not something that's likely to change, but as you say, what
> we are really testing is "the value pointed at by some identifier". In an
> array, that identifier can be dynamic, but in plain variable scope, that
> identifier is something you the programmer have defined long before the
> program executed, so its existence is never in question.
>
> Looked at that way, the handling of unitialised variables is just a
> side-effect of the handling of NULLs, since all unitialised variables have a
> default/implicit value of NULL.
>
> Regards,
>
> --
> Rowan Collins
> [IMSoP]
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php