From d8590940a19cdf5039c9ee52c901b2e4a9f9d769 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 16 Apr 2016 09:56:08 +0200 Subject: Use symtable lookup for arrays in array_column --- ext/standard/array.c | 2 +- .../array/array_column_numeric_string_key.phpt | 23 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 ext/standard/tests/array/array_column_numeric_string_key.phpt (limited to 'ext/standard') diff --git a/ext/standard/array.c b/ext/standard/array.c index 61723e584f..34dac68d1f 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -3534,7 +3534,7 @@ static inline zval *array_column_fetch_prop(zval *data, zval *name, zval *rv) } } else if (Z_TYPE_P(data) == IS_ARRAY) { if (Z_TYPE_P(name) == IS_STRING) { - prop = zend_hash_find(Z_ARRVAL_P(data), Z_STR_P(name)); + prop = zend_symtable_find(Z_ARRVAL_P(data), Z_STR_P(name)); } else if (Z_TYPE_P(name) == IS_LONG) { prop = zend_hash_index_find(Z_ARRVAL_P(data), Z_LVAL_P(name)); } diff --git a/ext/standard/tests/array/array_column_numeric_string_key.phpt b/ext/standard/tests/array/array_column_numeric_string_key.phpt new file mode 100644 index 0000000000..aed3c35ea2 --- /dev/null +++ b/ext/standard/tests/array/array_column_numeric_string_key.phpt @@ -0,0 +1,23 @@ +--TEST-- +array_column() treats numeric string keys as usual +--FILE-- + 'a'], [42 => 'b']]; +var_dump(array_column($array, 42)); +var_dump(array_column($array, "42")); + +?> +--EXPECT-- +array(2) { + [0]=> + string(1) "a" + [1]=> + string(1) "b" +} +array(2) { + [0]=> + string(1) "a" + [1]=> + string(1) "b" +} -- cgit v1.2.1