From: arpad at rajeczy dot com Operating system: linux 2.6.13 x86_64 PHP version: 5CVS-2005-10-29 (CVS) PHP Bug Type: Arrays related Bug description: array_product() is broken
Description: ------------ The array_product() function is completely broken, it returns 0 for all valid input and when the input is an empty array. Having looked at ext/standard/array.c, array_product() seems to be a straight copy of array_sum(), but with '+' replaced by '*'. As in array_sum(), the initial return_value is 0, but because the elements are multiplied with return_value rather than added to it, the result is always 0. Reproduce code: --------------- <pre><?php $tests = array( 'foo', array(), array(0), array(3), array(3, 3), array(0.5, 2), array(99999999, 99999999) ); foreach ($tests as $v) { echo 'testing: (', (is_array($v) ? implode(' * ', $v) : $v), ")\n\tresult: "; var_dump(array_product($v)); echo "\n\n"; } ?></pre> Expected result: ---------------- testing: (foo) result: Warning: array_product() [function.array-product]: The argument should be an array in /usr/local/apache2/htdocs/a/t.php on line 14 NULL testing: () result: Warning: array_product() [function.array-product]: Array must contain at least one element in /usr/local/apache2/htdocs/a/t.php on line 14 NULL testing: (0) result: int(0) testing: (3) result: int(3) testing: (3 * 3) result: int(9) testing: (0.5 * 2) result: float(1) testing: (9999999 * 9999999) result: int(99999980000001) Actual result: -------------- testing: (foo) result: Warning: array_product() [function.array-product]: The argument should be an array in /usr/local/apache2/htdocs/a/t.php on line 14 NULL testing: () result: int(0) testing: (0) result: int(0) testing: (3) result: int(0) testing: (3 * 3) result: int(0) testing: (0.5 * 2) result: float(0) testing: (99999999 * 99999999) result: int(0) -- Edit bug report at http://bugs.php.net/?id=35014&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=35014&r=trysnapshot4 Try a CVS snapshot (php5.0): http://bugs.php.net/fix.php?id=35014&r=trysnapshot50 Try a CVS snapshot (php5.1): http://bugs.php.net/fix.php?id=35014&r=trysnapshot51 Fixed in CVS: http://bugs.php.net/fix.php?id=35014&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=35014&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=35014&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=35014&r=needscript Try newer version: http://bugs.php.net/fix.php?id=35014&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=35014&r=support Expected behavior: http://bugs.php.net/fix.php?id=35014&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=35014&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=35014&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=35014&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=35014&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=35014&r=dst IIS Stability: http://bugs.php.net/fix.php?id=35014&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=35014&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=35014&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=35014&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=35014&r=mysqlcfg