diff options
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r-- | ext/standard/array.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index bbb4e958bd..b00934bfc6 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -3996,8 +3996,12 @@ PHP_FUNCTION(array_product) php_error_docref(NULL TSRMLS_CC, E_WARNING, "The argument should be an array"); return; } - - ZVAL_LONG(return_value, 0); + + if (!zend_hash_num_elements(Z_ARRVAL_PP(input))) { + RETURN_LONG(0); + return; + } + ZVAL_LONG(return_value, 1); for (zend_hash_internal_pointer_reset_ex(Z_ARRVAL_PP(input), &pos); zend_hash_get_current_data_ex(Z_ARRVAL_PP(input), (void **)&entry, &pos) == SUCCESS; |