#31453 [Ver->Fbk]: array_rand() is not returning random values
| From: | sniper@php.net | Date: | Mon, 10 Jan 2005 21:40:51 +0000 |
| Subject: | #31453 [Ver->Fbk]: array_rand() is not returning random values | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-71774@lists.php.net to get a copy of this message | ||
ID: 31453
Updated by: sniper@php.net
Reported By: cdturri at hotmail dot com
-Status: Verified
+Status: Feedback
Bug Type: Arrays related
Operating System: Win32
PHP Version: 5CVS (2005-01-10)
New Comment:
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
Previous Comments:
------------------------------------------------------------------------
[2005-01-10 22:28:57] cdturri at hotmail dot com
Hi,
Tested under IIS 5.0 and the bug is indeed present. Headers:
1 HTTP/1.1 200 OK
2 Server: Microsoft-IIS/5.0
3 Date: Mon, 10 Jan 2005 21:36:20 GMT
4 X-Powered-By: ASP.NET
5 Content-type: text/html
6 X-Powered-By: PHP/5.0.3
Thanks,
Christian
------------------------------------------------------------------------
[2005-01-10 22:20:05] jed@php.net
Also, is this a Windows-only problem with ZTS? Because apparently, it
works under Apache 2 on Linux without a problem. Can someone reproduce
this bug on anything but Win32? Is this limited to Apache2, or is it
present in IIS as well?
------------------------------------------------------------------------
[2005-01-10 22:04:06] jed@php.net
Present in my Web configuration.
http://jed.homedns.org/test.php
Apache/2.0.52, PHP/5.0.3
Microsoft Windows XP [Version 5.1.2600]
However, *NOT* present in command line. (ZTS?)
------------------------------------------------------------------------
[2005-01-10 16:29:27] nlopess@php.net
I can confirm this problem.
Maybe the problem is just when running in ZTS mode, as it uses a
different seed generator.
However I don't time to trace the problem now.
------------------------------------------------------------------------
[2005-01-09 15:04:01] cdturri at hotmail dot com
Description:
------------
Hi guys,
array_rand() is not returning random values in my scripts. I am using a
multidimension array that is being loaded from an INI file with
@parse_ini_file(). Tested under Apache v2.0.52/PHP v5.0.3 on Windows
2000 Advanced Server and a CVS build (php5-win32-200501071130.zip)
under Windows as well. Bug appears on both. I don't have a Unix system
to test it under PHP 5 (shame on me!) but the problem does NOT occur
under Unix/Apache v 1.3.33/PHP v4.3.9.
Calling srand() to seed the random number generator seems to fix the
problem but the PHP manual clearly says that:
"Note: As of PHP 4.2.0, there is no need to seed the random number
generator with srand() or mt_srand() as this is now done
automatically."
(http://ie2.php.net/manual/en/function.array-rand.php)
mt_rand(), rand() and mt_srand() also contain notes saying that seeding
is not required before calling them.
Found several related bugs, but this one mentions the same issue:
http://bugs.php.net/bug.php?id=26290
[17 Nov 2003 2:12pm CET] iliaa@php.net
You forgot to call srand() to generate random key. Hence the lack of
random data.
[17 Nov 2003 2:25pm CET] iliaa@php.net
Incorrect documentaion I'm afraid.
So, it is one or the other. Either the documentation is wrong or the
function is not properly calling seeding the random number generator.
Could anyone please have a look?
Thanks for looking at this bug.
Regards,
Christian
Reproduce code:
---------------
I am using this code to verify the bug:
<?php
$multiarray = @parse_ini_file('cache.ini',true);
for($i=0;$i<100;$i++){
$rand_key = array_rand($multiarray);
print $rand_key . '<br>';
if ($i == 1) {
$first_item = $rand_key;
}
if ($first_item == $rand_key) {
echo '<br>';
}
}
?>
You can see the bug at:
http://www.turribeach.com.ar/downloads/test.php
You can download the INI file I am using and the test.php from:
http://www.turribeach.com.ar/downloads/PHP_Test.zip
Expected result:
----------------
A random key from the INI file.
Actual result:
--------------
A key but that it is not random, it is a subset of the original key
array.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=31453&edit=1