From:             postings-php-bug at hans-spath dot de
Operating system: Windows + Linux
PHP version:      5.0.3
PHP Bug Type:     Variables related
Bug description:  array shows different content with print_r/var_export than 
with foreach+echo

Description:
------------
While playing with big arrays I discovered this:

If you assign some array values to a variable by reference, you can fuck
up the array.

When you dump the array contents with print_r() or var_dump() you see
something else that with an combination of foreach and echo (or print_r)
on the value.

If tested my reproduce code with PHP (CLI) 4.3.2, 4.3.8, 4.3.10, 5.0.0 and
5.0.3 under Windows XP SP2. Always the same result. But I discovered the
issue (other code) on a Linux system running PHP (CGI) 4.3.10.

It looks a bit like Bug #29992, and I'm sorry if filing a duplicate.

But I am not complaining about the unexpected values, I am complaining
about getting different content from the same array when using a different
method.

Reproduce code:
---------------
<? $test = array();
for( $i=0; $i<8; $i++ )
        $test["key {$i}"] = "value {$i}";

$keys = array( 'key 0', 'key 2', 'key 4' );

foreach( $keys as $key )
        $t =& $test[$key];

print_r( $test );
foreach( $test as $k=>$t ) 
        echo "[{$k}] {$t}\n";

echo "---\n";

asort( $test );

foreach( $test as $k=>$t ) 
        echo "[{$k}] {$t}\n";

Expected result:
----------------
[Note: I'm not sure whether it should exactly look like this, but at least
the three blocks should print the same key=>value pairs.]
Array
(
    [key 0] => value 0
    [key 1] => value 1
    [key 2] => value 2
    [key 3] => value 3
    [key 4] => value 4
    [key 5] => value 5
    [key 6] => value 6
    [key 7] => value 7
)
[key 0] value 0
[key 1] value 1
[key 2] value 2
[key 3] value 3
[key 4] value 4
[key 5] value 5
[key 6] value 6
[key 7] value 7
---
[key 0] value 0
[key 1] value 1
[key 2] value 2
[key 3] value 3
[key 4] value 4
[key 5] value 5
[key 6] value 6
[key 7] value 7

Actual result:
--------------
Array
(
    [key 0] => value 0
    [key 1] => value 1
    [key 2] => value 2
    [key 3] => value 3
    [key 4] => value 4
    [key 5] => value 5
    [key 6] => value 6
    [key 7] => value 7
)
[key 0] value 0
[key 1] value 1
[key 2] value 2
[key 3] value 3
[key 4] value 3   <--
[key 5] value 5
[key 6] value 6
[key 7] value 7
---
[key 0] value 0
[key 1] value 1
[key 2] value 2
[key 3] value 3
[key 5] value 5
[key 6] value 6
[key 7] value 7   <--
[key 4] value 7   <--

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

Reply via email to