From:             danielc at analysisandsolutions dot com
Operating system: Windows 2000
PHP version:      Irrelevant
PHP Bug Type:     Zend Engine 2 problem
Bug description:  undefined notices via unset()

Description:
------------
unset() acts inconsistently when acting upon array keys that don't exist.

In some cases it throws Notices about "Undefined index" "Undefined
variable" and "Undefined property."

The behavior varies depending on
   a) the dimension of the array trying to be unset
   b) whether the array is set
   c) if the unset() call is in a class
   d) the version of PHP being used

Reproduce code:
---------------
<?php

class test {

    var $Array2 = array();

        function test() {
        unset($this->Nada);                 // no problem

        unset($this->Array1['one:one']);    // 4.3.3:  Undefined property
                                            // 500b2:  no problem
                unset($this->Array1['one:two'][1]); // 4.3.3:  Undefined property
                                            // 500b2:  no problem

                unset($this->Array2['two:one']);    // no problem
                unset($this->Array2['two:two'][1]); // Undefined index

        unset($Nada);                       // no problem

        unset($Array3['three:one']);        // Undefined variable
        unset($Array3['three:two'][1]);     // Undefined variable

        $Array4 = array();
        unset($Array4['four:one']);         // no problem
        unset($Array4['four:two'][1]);      // Undefined index
    }
}

$test1 = new test();

unset($Nada);                               // no problem

unset($Array5['five:one']);                 // Undefined variable
unset($Array5['five:two'][1]);              // Undefined variable

$Array6 = array();
unset($Array6['six:one']);                  // no problem
unset($Array6['six:two'][1]);               // Undefined index

?>

Expected result:
----------------
No notices at all.

Considering no notice was produced on a non-existant scalar, I expected
the same behavior when trying to unset various arrays, regardless of where
the unset() all is made.

Actual result:
--------------
PHP 4.3.3
Notice:  Undefined property:  Array1 in t.php on line 12
Notice:  Undefined property:  Array1 in t.php on line 13
Notice:  Undefined index:  two:two in t.php on line 16
Notice:  Undefined variable:  Array3 in t.php on line 20
Notice:  Undefined variable:  Array3 in t.php on line 21
Notice:  Undefined index:  four:two in t.php on line 25
Notice:  Undefined variable:  Array5 in t.php on line 33
Notice:  Undefined variable:  Array5 in t.php on line 34
Notice:  Undefined index:  six:two in t.php on line 38

PHP 500b2-dev 200310010230
Notice:  Undefined index:  two:two in t.php on line 16
Notice:  Undefined variable:  Array3 in t.php on line 20
Notice:  Undefined variable:  Array3 in t.php on line 21
Notice:  Undefined index:  four:two in t.php on line 25
Notice:  Undefined variable:  Array5 in t.php on line 33
Notice:  Undefined variable:  Array5 in t.php on line 34
Notice:  Undefined index:  six:two in t.php on line 38


-- 
Edit bug report at http://bugs.php.net/?id=25826&edit=1
-- 
Try a CVS snapshot (php4):  http://bugs.php.net/fix.php?id=25826&r=trysnapshot4
Try a CVS snapshot (php5):  http://bugs.php.net/fix.php?id=25826&r=trysnapshot5
Fixed in CVS:               http://bugs.php.net/fix.php?id=25826&r=fixedcvs
Fixed in release:           http://bugs.php.net/fix.php?id=25826&r=alreadyfixed
Need backtrace:             http://bugs.php.net/fix.php?id=25826&r=needtrace
Try newer version:          http://bugs.php.net/fix.php?id=25826&r=oldversion
Not developer issue:        http://bugs.php.net/fix.php?id=25826&r=support
Expected behavior:          http://bugs.php.net/fix.php?id=25826&r=notwrong
Not enough info:            http://bugs.php.net/fix.php?id=25826&r=notenoughinfo
Submitted twice:            http://bugs.php.net/fix.php?id=25826&r=submittedtwice
register_globals:           http://bugs.php.net/fix.php?id=25826&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=25826&r=php3
Daylight Savings:           http://bugs.php.net/fix.php?id=25826&r=dst
IIS Stability:              http://bugs.php.net/fix.php?id=25826&r=isapi
Install GNU Sed:            http://bugs.php.net/fix.php?id=25826&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=25826&r=float

Reply via email to