From:             
Operating system: Win XP, Win 7
PHP version:      5.3.5
Package:          Arrays related
Bug Type:         Bug
Bug description:Array pointer unwanted reset

Description:
------------
When looping by foreach on 2D array instead of it's array keys inner
arrays' internal pointer is reset.

Test script:
---------------
<?php



$outer = array(

        'A' => array(0 => '1st', 1 => '2nd',                   3 => '3rd'),

        'B' => array(            1 => '2nd', 2 => 'still 2nd', 4 => '3rd', 5 =>
'still 3rd'),

);

$syncMarks = array(1, 3);



do {

        $next = FALSE;

        $current = array();

        $syncMark = current($syncMarks);

        

        //foreach (array_keys($outer) as $key) {

        foreach ($outer as $key => $inner) {

                $offset = key($outer[$key]);

                

                if (isset($offset)) {

                        $next = TRUE;

                        

                        if ($syncMark === FALSE || $offset < $syncMark) {

                                $current[$key] = current($outer[$key]);

                                next($outer[$key]);

                        }

                }

        }

        

        var_dump($current);

} while (empty($current) && next($syncMarks) || $next);

Expected result:
----------------
array(1) {

  ["A"]=>

  string(3) "1st"

}

array(0) {

}

array(2) {

  ["A"]=>

  string(3) "2nd"

  ["B"]=>

  string(3) "2nd"

}

array(1) {

  ["B"]=>

  string(9) "still 2nd"

}

array(0) {

}

array(2) {

  ["A"]=>

  string(3) "3rd"

  ["B"]=>

  string(3) "3rd"

}

array(1) {

  ["B"]=>

  string(9) "still 3rd"

}

array(0) {

}



Actual result:
--------------
array(1) {

  ["A"]=>

  string(3) "1st"

}

array(0) {

}

array(2) {

  ["A"]=>

  string(3) "2nd"

  ["B"]=>

  string(3) "2nd"

}

array(1) {

  ["B"]=>

  string(9) "still 2nd"

}

array(0) {

}

array(2) {

  ["A"]=>

  string(3) "3rd"

  ["B"]=>

  string(3) "3rd"

}

array(2) {

  ["A"]=>

  string(3) "1st" // <-- This is unwanted result

  ["B"]=>

  string(9) "still 3rd"

...

-- 
Edit bug report at http://bugs.php.net/bug.php?id=53824&edit=1
-- 
Try a snapshot (PHP 5.2):            
http://bugs.php.net/fix.php?id=53824&r=trysnapshot52
Try a snapshot (PHP 5.3):            
http://bugs.php.net/fix.php?id=53824&r=trysnapshot53
Try a snapshot (trunk):              
http://bugs.php.net/fix.php?id=53824&r=trysnapshottrunk
Fixed in SVN:                        
http://bugs.php.net/fix.php?id=53824&r=fixed
Fixed in SVN and need be documented: 
http://bugs.php.net/fix.php?id=53824&r=needdocs
Fixed in release:                    
http://bugs.php.net/fix.php?id=53824&r=alreadyfixed
Need backtrace:                      
http://bugs.php.net/fix.php?id=53824&r=needtrace
Need Reproduce Script:               
http://bugs.php.net/fix.php?id=53824&r=needscript
Try newer version:                   
http://bugs.php.net/fix.php?id=53824&r=oldversion
Not developer issue:                 
http://bugs.php.net/fix.php?id=53824&r=support
Expected behavior:                   
http://bugs.php.net/fix.php?id=53824&r=notwrong
Not enough info:                     
http://bugs.php.net/fix.php?id=53824&r=notenoughinfo
Submitted twice:                     
http://bugs.php.net/fix.php?id=53824&r=submittedtwice
register_globals:                    
http://bugs.php.net/fix.php?id=53824&r=globals
PHP 4 support discontinued:          http://bugs.php.net/fix.php?id=53824&r=php4
Daylight Savings:                    http://bugs.php.net/fix.php?id=53824&r=dst
IIS Stability:                       
http://bugs.php.net/fix.php?id=53824&r=isapi
Install GNU Sed:                     
http://bugs.php.net/fix.php?id=53824&r=gnused
Floating point limitations:          
http://bugs.php.net/fix.php?id=53824&r=float
No Zend Extensions:                  
http://bugs.php.net/fix.php?id=53824&r=nozend
MySQL Configuration Error:           
http://bugs.php.net/fix.php?id=53824&r=mysqlcfg

Reply via email to