Commit: 7b34324f846505a0af6bed83556b840b50a1ef30 Author: Sara Golemon <poll...@php.net> Sun, 21 Apr 2013 22:21:40 -0700 Parents: b119836765a72700a07b004b95c92beffa3daf95 Branches: PHP-5.5 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=7b34324f846505a0af6bed83556b840b50a1ef30 Log: Fix handling of double keys in array_column Also fix resource test to not localize __FILE__ to cwd. Changed paths: M ext/standard/array.c M ext/standard/tests/array/array_column_basic.phpt M ext/standard/tests/array/array_column_error.phpt Diff: diff --git a/ext/standard/array.c b/ext/standard/array.c index 9a64cf4..425d53e 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -2547,6 +2547,9 @@ PHP_FUNCTION(array_column) case IS_LONG: column_idx = Z_LVAL_PP(zcolumn); break; + case IS_DOUBLE: + column_idx = (long)Z_DVAL_PP(zcolumn); + break; case IS_STRING: column = Z_STRVAL_PP(zcolumn); column_len = Z_STRLEN_PP(zcolumn); @@ -2569,6 +2572,9 @@ PHP_FUNCTION(array_column) case IS_LONG: key_idx = Z_LVAL_PP(zkey); break; + case IS_DOUBLE: + key_idx = (long)Z_DVAL_PP(zkey); + break; case IS_STRING: key = Z_STRVAL_PP(zkey); key_len = Z_STRLEN_PP(zkey); diff --git a/ext/standard/tests/array/array_column_basic.phpt b/ext/standard/tests/array/array_column_basic.phpt index 70ce213..8c49910 100644 --- a/ext/standard/tests/array/array_column_basic.phpt +++ b/ext/standard/tests/array/array_column_basic.phpt @@ -42,8 +42,7 @@ echo "-- last_name column from recordset, keyed by value from first_name column var_dump(array_column($records, 'last_name', 'first_name')); echo "\n*** Testing multiple data types ***\n"; -$file = basename(__FILE__); -$fh = fopen($file, 'r', true); +$fh = fopen(__FILE__, 'r', true); $values = array( array( 'id' => 1, @@ -89,11 +88,13 @@ $numericCols = array( ); var_dump(array_column($numericCols, 1)); var_dump(array_column($numericCols, 1, 0)); +var_dump(array_column($numericCols, 1, 0.123)); echo "\n*** Testing failure to find specified column ***\n"; var_dump(array_column($numericCols, 2)); var_dump(array_column($numericCols, 'foo')); var_dump(array_column($numericCols, 0, 'foo')); +var_dump(array_column($numericCols, 3.14)); echo "\n*** Testing single dimensional array ***\n"; $singleDimension = array('foo', 'bar', 'baz'); @@ -230,6 +231,14 @@ array(3) { ["ccc"]=> string(3) "333" } +array(3) { + ["aaa"]=> + string(3) "111" + ["bbb"]=> + string(3) "222" + ["ccc"]=> + string(3) "333" +} *** Testing failure to find specified column *** array(0) { @@ -244,6 +253,8 @@ array(3) { [2]=> string(3) "ccc" } +array(0) { +} *** Testing single dimensional array *** array(0) { diff --git a/ext/standard/tests/array/array_column_error.phpt b/ext/standard/tests/array/array_column_error.phpt index 1aec1ac..bdcbec0 100644 --- a/ext/standard/tests/array/array_column_error.phpt +++ b/ext/standard/tests/array/array_column_error.phpt @@ -26,18 +26,12 @@ var_dump(array_column(1, 'foo')); echo "\n-- Testing array_column() column key parameter should be a string or an integer (testing bool) --\n"; var_dump(array_column(array(), true)); -echo "\n-- Testing array_column() column key parameter should be a string or integer (testing float) --\n"; -var_dump(array_column(array(), 2.3)); - echo "\n-- Testing array_column() column key parameter should be a string or integer (testing array) --\n"; var_dump(array_column(array(), array())); echo "\n-- Testing array_column() index key parameter should be a string or an integer (testing bool) --\n"; var_dump(array_column(array(), 'foo', true)); -echo "\n-- Testing array_column() index key parameter should be a string or integer (testing float) --\n"; -var_dump(array_column(array(), 'foo', 2.3)); - echo "\n-- Testing array_column() index key parameter should be a string or integer (testing array) --\n"; var_dump(array_column(array(), 'foo', array())); @@ -71,11 +65,6 @@ NULL Warning: array_column(): The column key should be either a string or an integer in %s on line %d bool(false) --- Testing array_column() column key parameter should be a string or integer (testing float) -- - -Warning: array_column(): The column key should be either a string or an integer in %s on line %d -bool(false) - -- Testing array_column() column key parameter should be a string or integer (testing array) -- Warning: array_column(): The column key should be either a string or an integer in %s on line %d @@ -86,11 +75,6 @@ bool(false) Warning: array_column(): The index key should be either a string or an integer in %s on line %d bool(false) --- Testing array_column() index key parameter should be a string or integer (testing float) -- - -Warning: array_column(): The index key should be either a string or an integer in %s on line %d -bool(false) - -- Testing array_column() index key parameter should be a string or integer (testing array) -- Warning: array_column(): The index key should be either a string or an integer in %s on line %d -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php