There is one other difference that has not been pointed out yet. Consider
the following:

$array = null;
array_key_exists( 0, $array['key'] );
isset( $array['key'][0] );

In this case, array_key_exists will cause an error, because $array['key']
doesn't exist, but isset() won't because it doesn't matter what part of the
variable isn't set, so long as it's not set it will return false.

That was the main reason I recommended this for E:OpenID. If you look at
the code in the patch (https://gerrit.wikimedia.org/r/71258), this was the
original.

array_key_exists( 'http://axschema.org/namePerson/first', $ax )

Meaning, it's possible that $ax[...] isn't set, meaning trying to see if
the index 0 is in $ax[...] will cause an error.

*-- *
*Tyler Romeo*
Stevens Institute of Technology, Class of 2016
Major in Computer Science
www.whizkidztech.com | tylerro...@gmail.com


On Tue, Jul 2, 2013 at 2:24 PM, Thomas Gries <m...@tgries.de> wrote:

> Am 02.07.2013 18:47, schrieb Brion Vibber:
> > On Tue, Jul 2, 2013 at 9:40 AM, Thomas Gries <m...@tgries.de> wrote:
> >
> >> PHP codestyle question re. isset( $array['key'][0] ) versus
> >> array_key_exists( 0, $array['key'] )
> >>
> >> On a recent patch [1], we had a discussion what is - or may be - better
> >>
> >>   * isset( $array['key'][0] )
> >>   * array_key_exists( 0, $array['key'] )
> >>
> > In my opinion, isset() is usually clearer and "more natural", in part
> > because you don't have to guess/memorize the order of parameters (which
> is
> > haystack again, and which is needle?).
> >
> > There is however a functional difference: if your array can contain null
> as
> > a valid value, then isset() can give you a false negative. So beware...
> >
> > -- brion
> In the present case of E:OpenID, I need to check the data of an array
> which has been read in from the Provider.
> In my view, it appears to be more secure to use array_key_exists( ).
>
>
> _______________________________________________
> Wikitech-l mailing list
> Wikitech-l@lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>
_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to