Edit report at https://bugs.php.net/bug.php?id=62680&edit=1

 ID:                 62680
 Updated by:         larue...@php.net
 Reported by:        kriscr...@php.net
 Summary:            Function isset() throws fatal error on set array if
                     non-existent key depth >= 3
 Status:             Verified
 Type:               Bug
 Package:            Arrays related
 Operating System:   Linux and Windows
 PHP Version:        5.3.15
 Block user comment: N
 Private report:     N

 New Comment:

I'd like mark this as won't fix for 5.3, fixing this will be a big work IMO, 
maybe 
introduce new issues, and 5.3 is quite stable version now.


Previous Comments:
------------------------------------------------------------------------
[2012-07-30 18:32:12] kriscr...@php.net

Woops, drop the word "ternary" from the description/title.  =)

------------------------------------------------------------------------
[2012-07-30 18:30:31] kriscr...@php.net

Oh and here's the test case:

--TEST--
Test for existence of ternary isset() bug in nested arrays.
--DESCRIPTION--
Errors should not be thrown when passing non-set arguments to isset().
--CREDIT--
Kris Craig <kriscr...@php.net>
--FILE--
<?php

$arr = array( "key" => "", 
                "key2" => array( "subkey" => array( "supersubkey" => array( 
"superdupersubkey" => "Hello." ) ) ), 
                "key3" => array( "subkey" => array( "supersubkey" => "Hello." ) 
) );

if ( isset( $arr["key"]["non_existant_key"] ) )
{
        print "Arroooo?";
}

print "DEBUG #1.<br />\r\n";

$out = ( isset( $arr["key"]["non_existent_key"] ) ? "WTF?!" : NULL );

print "DEBUG #2.<br />\r\n";

foreach ( $arr as $key => $row )
{
        print ( isset( $row["subkey"]["supersubkey"] ) ? 
$row["subkey"]["supersubkey"] . "<br />\r\n" : NULL );
}

print "DEBUG #3.<br />\r\n";

/* Ternaries.  --Kris */
print ( isset( 
$some_non_existent_variable[0]["subkey"]["supersubkey"]["superdupersubkey"] ) ? 
"BAD<br />\r\n" : "OK<br />\r\n" );
print ( isset( $arr[0]["subkey"]["supersubkey"]["superdupersubkey"] ) ? 
"BAD-0<br />\r\n" : "OK-0<br />\r\n" );
print ( isset( $arr["key"]["subkey"]["supersubkey"]["superdupersubkey"] ) ? 
"BAD-1<br />\r\n" : "OK-1<br />\r\n" );
print ( isset( $arr["key2"]["subkey"]["supersubkey"]["superdupersubkey"] ) ? 
"OK-2<br />\r\n" : "BAD-2<br />\r\n" );
print ( isset( $arr["key3"]["subkey"]["supersubkey"]["superdupersubkey"] ) ? 
"BAD-3<br />\r\n" : "OK-3<br />\r\n" );

/* Ifcheck.  --Kris */
if ( isset( $arr["key"]["subkey"]["supersubkey"]["superdupersubkey"] ) )
{
        die( "Error : T_PAAMAYIM_NEKUDOTAYIM is too hard to pronounce!" );
}

print "DEBUG #4.<br />\r\n";

foreach ( $arr as $key => $row )
{
        print ( isset( $row["subkey"]["supersubkey"]["superdupersubkey"] ) ? 
$row["subkey"]["supersubkey"]["superdupersubkey"] . "<br />\r\n" : NULL );
}

print "DEBUG #5.";

?>
--EXPECT--
DEBUG #1.<br />
DEBUG #2.<br />
Array<br />
Hello.<br />
DEBUG #3.<br />
OK-0<br />
OK-1<br />
OK-2<br />
OK-3<br />
DEBUG #4.<br />
Hello.<br />
DEBUG #5.

------------------------------------------------------------------------
[2012-07-30 18:27:15] kriscr...@php.net

Ahh ok.  Is this a won't fix then since it's not in 5.4?  Or is this still 
something we'd want to correct?

Thanks!

------------------------------------------------------------------------
[2012-07-28 07:34:31] larue...@php.net

yeah, this is a issue in 5.3, while 5.4 have no such issue which is due to the 
fetch_dim_is behavior changed

------------------------------------------------------------------------
[2012-07-27 23:04:52] kriscr...@php.net

I'm still fairly new to the codebase compared to most of you karma folks, so if 
this looks like something a relative newbie could handle, please point me in 
the right direction and I'd be happy to just assign this one to myself.  It'll 
probably take way longer but I imagine it would be a good learning experience 
for me if I had a little guidance to get me started.

Thanks!  =)

------------------------------------------------------------------------


The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at

    https://bugs.php.net/bug.php?id=62680


-- 
Edit this bug report at https://bugs.php.net/bug.php?id=62680&edit=1

Reply via email to