From: Adam Harvey Date: Fri, 27 Aug 2010 03:54:10 +0000 (+0000) Subject: Implemented request #34857 (Change array_combine behaviour when called with X-Git-Tag: php-5.4.0alpha1~191^2~1043 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f33837ff9714105ee11cdedeefd23e674c0043e6;p=php Implemented request #34857 (Change array_combine behaviour when called with empty arrays). Patch by Joel Perras . --- diff --git a/NEWS b/NEWS index 5bae8b202e..6e52ca2477 100644 --- a/NEWS +++ b/NEWS @@ -101,6 +101,8 @@ at gmail dot com, Pierre) - Implemented FR #42060 (Add paged Results support). (ando@OpenLDAP.org, iarenuno@eteo.mondragon.edu, jeanseb@au-fil-du.net, remy.saissy@gmail.com) +- Implemented FR #34857 (Change array_combine behaviour when called with empty + arrays). (joel.perras@gmail.com) - Fixed PDO objects binary incompatibility. (Dmitry) diff --git a/UPGRADING b/UPGRADING index e0a8bca7fe..a0d86d0b3c 100755 --- a/UPGRADING +++ b/UPGRADING @@ -90,7 +90,8 @@ UPGRADE NOTES - PHP X.Y 3. Changes made to existing functions ===================================== -- +- array_combine now returns array() instead of FALSE when two empty arrays are + provided as parameters. =================================== 4. Changes made to existing methods diff --git a/ext/standard/array.c b/ext/standard/array.c index 99b9e78c31..ee3c5ae75a 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -4481,13 +4481,12 @@ PHP_FUNCTION(array_combine) RETURN_FALSE; } + array_init_size(return_value, num_keys); + if (!num_keys) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Both parameters should have at least 1 element"); - RETURN_FALSE; + return; } - array_init_size(return_value, num_keys); - zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(keys), &pos_keys); zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos_values); while (zend_hash_get_current_data_ex(Z_ARRVAL_P(keys), (void **)&entry_keys, &pos_keys) == SUCCESS && diff --git a/ext/standard/tests/array/array_combine_error2.phpt b/ext/standard/tests/array/array_combine_error2.phpt index c06fdb490a..4224f1c8eb 100644 --- a/ext/standard/tests/array/array_combine_error2.phpt +++ b/ext/standard/tests/array/array_combine_error2.phpt @@ -32,9 +32,8 @@ echo "Done"; *** Testing array_combine() : error conditions specific to array_combine() *** -- Testing array_combine() function with empty arrays -- - -Warning: array_combine(): Both parameters should have at least 1 element in %s on line %d -bool(false) +array(0) { +} -- Testing array_combine() function with empty array for $keys argument -- diff --git a/ext/standard/tests/array/array_combine_variation3.phpt b/ext/standard/tests/array/array_combine_variation3.phpt index 51d8462d51..03de632905 100644 --- a/ext/standard/tests/array/array_combine_variation3.phpt +++ b/ext/standard/tests/array/array_combine_variation3.phpt @@ -108,9 +108,8 @@ array(2) { bool(true) } -- Iteration 4 -- - -Warning: array_combine(): Both parameters should have at least 1 element in %s on line %d -bool(false) +array(0) { +} -- Iteration 5 -- array(1) { [""]=> diff --git a/ext/standard/tests/array/array_combine_variation4.phpt b/ext/standard/tests/array/array_combine_variation4.phpt index 02ec6efd22..bcd8428cee 100644 --- a/ext/standard/tests/array/array_combine_variation4.phpt +++ b/ext/standard/tests/array/array_combine_variation4.phpt @@ -100,9 +100,8 @@ Warning: Illegal offset type in %s on line %d Warning: Illegal offset type in %s on line %d -- Iteration 1 -- - -Warning: array_combine(): Both parameters should have at least 1 element in %s on line %d -bool(false) +array(0) { +} -- Iteration 2 -- array(1) { [0]=> diff --git a/ext/standard/tests/array/array_combine_variation5.phpt b/ext/standard/tests/array/array_combine_variation5.phpt index c3d1d57aac..4d9f185786 100644 --- a/ext/standard/tests/array/array_combine_variation5.phpt +++ b/ext/standard/tests/array/array_combine_variation5.phpt @@ -82,9 +82,8 @@ echo "Done"; --EXPECTF-- *** Testing array_combine() : assoc array with diff values to both $keys and $values argument *** -- Iteration 1 -- - -Warning: array_combine(): Both parameters should have at least 1 element in %s on line %d -bool(false) +array(0) { +} -- Iteration 2 -- array(1) { [0]=>