diff options
Diffstat (limited to 'it.class')
-rw-r--r-- | it.class | 22 |
1 files changed, 16 insertions, 6 deletions
@@ -417,15 +417,25 @@ static function replace($replacements, $string, $p = array()) * Extract key => value pairs from assoc array by key * @param $array array to filter * @param $keys array or comma separated list of keys to keep + * @param $p['reorder'] reorder pairs to the order of the $keys array */ -static function filter_keys($array, $keys) +static function filter_keys($array, $keys, $p = array()) { $result = array(); - $keep = array_flip(is_string($keys) ? explode(",", $keys) : (array)$keys); - - foreach ($array as $key => $val) - if (isset($keep[$key])) - $result[$key] = $val; + if (is_string($keys)) + $keys = explode(",", $keys); + if ($p['reorder']) + { + foreach ((array)$keys as $key) + $result[$key] = $array[$key]; + } + else + { + $keep = array_flip((array)$keys); + foreach ($array as $key => $val) + if (isset($keep[$key])) + $result[$key] = $val; + } return $result; } |