Edit report at http://bugs.php.net/bug.php?id=48484&edit=1

 ID:                 48484
 Updated by:         [email protected]
 Reported by:        zhalassy at loginet dot hu
 Summary:            array_product(array()) returns 0 instead of 1
-Status:             Verified
+Status:             Closed
 Type:               Bug
 Package:            Math related
 Operating System:   *
 PHP Version:        5.2.9
-Assigned To:        
+Assigned To:        iliaa
 Block user comment: N
 Private report:     N

 New Comment:

This bug has been fixed in SVN.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------
[2010-12-12 20:27:05] [email protected]

Automatic comment from SVN on behalf of iliaa
Revision: http://svn.php.net/viewvc/?view=revision&revision=306288
Log: Fixed bug 48484 (array_product() always returns 0 for an empty
array).

------------------------------------------------------------------------
[2009-10-13 05:33:38] chrisstocktonaz at gmail dot com

Patch is of course trivial, posting it only to have no unassigned math
bugs!



Index: ext/standard/array.c

===================================================================

--- ext/standard/array.c        (revision 289602)

+++ ext/standard/array.c        (working copy)

@@ -4020,7 +4020,7 @@

        }

 

        if (!zend_hash_num_elements(Z_ARRVAL_P(input))) {

-               RETURN_LONG(0);

+               RETURN_LONG(1);

        }

        ZVAL_LONG(return_value, 1);

------------------------------------------------------------------------
[2009-06-09 02:21:49] [email protected]

The current behavior was set in bug #35014, pretty sure we should change
it as you suggest.



Confirming for now.

------------------------------------------------------------------------
[2009-06-06 11:34:20] zhalassy at loginet dot hu

http://en.wikipedia.org/wiki/Identity_element



An identity with respect to addition is called an additive identity
(often denoted as 0) and an identity with respect to multiplication is
called a multiplicative identity (often denoted as 1). The distinction
is used most often for sets that support both binary operations, such as
rings. The multiplicative identity is often called the unit [...]



http://en.wikipedia.org/wiki/Unital



In mathematics, an algebra is unital (some authors say unitary) if it
contains a multiplicative identity element (or unit), i.e. an element 1
with the property 1x = x1 = x for all elements x of the algebra.



http://en.wikipedia.org/wiki/Empty_product

------------------------------------------------------------------------
[2009-06-06 11:22:13] zhalassy at loginet dot hu

Description:
------------
array_product(array()) returns 0 instead of 1. Empty product is 1 (hence
"1" is neutral in multiplication) in mathematics.



Example:



array_product(array(1,2)) * array_product(array(3,4)) === /* should be
*/ array_product(array()) * array_product(array(1,2,3,4));



example implementation:



function array_product($array){

    $product = 1;

    foreach($array as $element) $product *= $element;

    return $product;

}



Reproduce code:
---------------
echo product_array(array());

Expected result:
----------------
It should return 1.

Actual result:
--------------
It returns 0.




------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=48484&edit=1

Reply via email to