summaryrefslogtreecommitdiff
path: root/it.class
diff options
context:
space:
mode:
Diffstat (limited to 'it.class')
-rw-r--r--it.class22
1 files changed, 16 insertions, 6 deletions
diff --git a/it.class b/it.class
index f8c8553..f3dd0a8 100644
--- a/it.class
+++ b/it.class
@@ -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;
}