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