From c99acb618287fd77b93b013745a8e448c33c869e Mon Sep 17 00:00:00 2001 From: Egor Verbitskiy Date: Fri, 15 Jul 2016 04:53:25 -0700 Subject: [PATCH] Fixes #11950: Improve BaseArrayHelper::keyExists speed --- framework/CHANGELOG.md | 4 ++-- framework/helpers/BaseArrayHelper.php | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index e792b53dbb..3268dd23b0 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -4,10 +4,10 @@ Yii Framework 2 Change Log 2.0.10 under development ------------------------ -- Bug #11949: Fixed `ActiveField::end` generates close tag when it's `option['tag']` is null (egorio) - Bug #11912: Fixed PostgreSQL Schema to support negative default values for integer/float/decimal columns (nsknewbie) - Bug #11947: Fixed `gridData` initialization in `yii.gridView.js` (pavlm) - +- Bug #11949: Fixed `ActiveField::end` generates close tag when it's `option['tag']` is null (egorio) +- Enh #11950: Improve BaseArrayHelper::keyExists speed (egorio) 2.0.9 July 11, 2016 ------------------- diff --git a/framework/helpers/BaseArrayHelper.php b/framework/helpers/BaseArrayHelper.php index 88b639f56a..1968772939 100644 --- a/framework/helpers/BaseArrayHelper.php +++ b/framework/helpers/BaseArrayHelper.php @@ -486,7 +486,9 @@ class BaseArrayHelper public static function keyExists($key, $array, $caseSensitive = true) { if ($caseSensitive) { - return array_key_exists($key, $array); + // Function `isset` checks key faster but skips `null`, `array_key_exists` handles this case + // http://php.net/manual/en/function.array-key-exists.php#107786 + return isset($array[$key]) || array_key_exists($key, $array); } else { foreach (array_keys($array) as $k) { if (strcasecmp($key, $k) === 0) {