diff options
author | Nikita Popov <nikic@php.net> | 2016-04-16 09:56:08 +0200 |
---|---|---|
committer | Nikita Popov <nikic@php.net> | 2016-04-16 09:59:01 +0200 |
commit | d8590940a19cdf5039c9ee52c901b2e4a9f9d769 (patch) | |
tree | 45f4e82626b3c54c47558b1aa93e1505cd80b462 /ext/standard | |
parent | 28801bf249f113b6a25e43688fabcebb67a22df5 (diff) | |
download | php-git-d8590940a19cdf5039c9ee52c901b2e4a9f9d769.tar.gz |
Use symtable lookup for arrays in array_column
Diffstat (limited to 'ext/standard')
-rw-r--r-- | ext/standard/array.c | 2 | ||||
-rw-r--r-- | ext/standard/tests/array/array_column_numeric_string_key.phpt | 23 |
2 files changed, 24 insertions, 1 deletions
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-- +<?php + +$array = [[42 => '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" +} |