On Sun, Jul 12, 2015 at 2:52 AM Ralph Schindler <ra...@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
>
>

Reply via email to