summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Harvey <aharvey@php.net>2010-08-27 03:54:10 +0000
committerAdam Harvey <aharvey@php.net>2010-08-27 03:54:10 +0000
commitf33837ff9714105ee11cdedeefd23e674c0043e6 (patch)
treea344ab2778dda829e16aa466c5f668ad0e807c65
parent0f3468330445904566c508916f25d8275c8cafd5 (diff)
downloadphp-git-f33837ff9714105ee11cdedeefd23e674c0043e6.tar.gz
Implemented request #34857 (Change array_combine behaviour when called with
empty arrays). Patch by Joel Perras <joel.perras@gmail.com>.
-rw-r--r--NEWS2
-rwxr-xr-xUPGRADING3
-rw-r--r--ext/standard/array.c7
-rw-r--r--ext/standard/tests/array/array_combine_error2.phpt5
-rw-r--r--ext/standard/tests/array/array_combine_variation3.phpt5
-rw-r--r--ext/standard/tests/array/array_combine_variation4.phpt5
-rw-r--r--ext/standard/tests/array/array_combine_variation5.phpt5
7 files changed, 15 insertions, 17 deletions
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]=>