Re: Possible Bug or Bad Expectations?
| From: | Tjerk Meesters | Date: | Sun, 12 Jul 2015 00:14:17 +0000 |
| Subject: | Re: Possible Bug or Bad Expectations? | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-87114@lists.php.net to get a copy of this message | ||
On Sun, Jul 12, 2015 at 2:52 AM Ralph Schindler <ralph@ralphschindler.com>
wrote:
> Hi all,
>
> I am conflicted as per if what I experience in this code should be
> throwing a notice in E_STRICT:
>
> http://3v4l.org/srm5f
>
> <?php
> error_reporting(E_ALL);
> $foo = ['bar' => ['baz' => 5]];
> $bar = ['box' => 'baz'];
>
> // this will Notice: Undefined index: boom
> var_dump(isset($foo['bar'][$bar['boom']]));
>
>
> Essentially, my expectation is that anything inside an isset() would be
> immune from notices of undefined indexes, but that is not the case with
> nested array key lookups.
>
You're not getting a notice for the undefined index
$foo['bar'][null],
that's basically what isset() is made to do. If you want to guard against
undefined indices in an array that you're using to dereference $foo you
need this:
var_dump(isset($bar['boom'], $foo['bar'][$bar['boom']]));
>
> Is this a bad expectation to have? Or should isset() silence the nested
> undefined index as well? I also realized this has always been the
> behavior leading me to believe I might have a bad expectation here. In
> any case wanted to check.
>
> Thanks,
> -ralph
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>