I don't think using 0 as the initial value by default is a good idea.
because array_reduce() can take any kind of element other than integer.
<?php
$a = array("a", "b", "c");
$lambda = create_function('$a, $b', 'return $a . $b;');
var_dump(array_reduce($a, $lambda));
?>
[Before this patch]
string(3) "abc"
[After this patch]
string(4) "0abc"
Those results imply a significant BC break. I don't know what *is* the
correct behaviour though.
Moriyoshi
"Ilia Alshanetsky" <[EMAIL PROTECTED]> wrote:
> iliaa Fri Aug 8 19:50:36 2003 EDT
>
> Modified files:
> /php-src/ext/standard array.c
> Log:
> Fixed bug #24980 (array_reduce() uses first element as default running
> total).
> Fixed memory leak that can be replicated using the function example on
> http://www.php.net/array_reduce
>
>
> Index: php-src/ext/standard/array.c
> diff -u php-src/ext/standard/array.c:1.238 php-src/ext/standard/array.c:1.239
> --- php-src/ext/standard/array.c:1.238 Tue Aug 5 06:29:03 2003
> +++ php-src/ext/standard/array.c Fri Aug 8 19:50:36 2003
> @@ -21,7 +21,7 @@
> +----------------------------------------------------------------------+
> */
>
> -/* $Id: array.c,v 1.238 2003/08/05 10:29:03 zeev Exp $ */
> +/* $Id: array.c,v 1.239 2003/08/08 23:50:36 iliaa Exp $ */
>
> #include "php.h"
> #include "php_ini.h"
> @@ -3374,7 +3374,9 @@
>
> if (ZEND_NUM_ARGS() > 2) {
> result = *initial;
> - zval_add_ref(&result);
> + } else {
> + MAKE_STD_ZVAL(result);
> + ZVAL_LONG(result, 0);
> }
>
> /* (zval **)input points to an element of argument stack
>
>
>
> --
> PHP CVS Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php