|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-01-19 20:03 UTC] 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 <-- PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Nov 18 09:00:01 2025 UTC |
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 ...]