ID: 31615 User updated by: postings-php-bug at hans-spath dot de Reported By: postings-php-bug at hans-spath dot de -Status: Feedback +Status: Open Bug Type: Variables related Operating System: * PHP Version: 5.0.3 New Comment:
Problem still exists. D:\PHP>5-lastest\php.exe -v PHP 5.1.0-dev (cli) (built: Jan 28 2005 20:18:19) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.1.0-dev, Copyright (c) 1998-2004 Zend Technologies D:\PHP>5-lastest\php.exe -f test\array_references_foreach.php 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 <-- D:\PHP>4-lastest\php.exe -v PHP 4.3.11-dev (cgi-fcgi) (built: Jan 28 2005 14:16:59) Copyright (c) 1997-2004 The PHP Group Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies D:\PHP>4-lastest\php.exe -f test\array_references_foreach.php [... same result as above ...] Previous Comments: ------------------------------------------------------------------------ [2005-01-26 04:33:47] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ------------------------------------------------------------------------ [2005-01-19 20:03:32] postings-php-bug at hans-spath dot de 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 this bug report at http://bugs.php.net/?id=31615&edit=1