From 3a082fd3d6cb2e72612d51b9d8e54e93effb93eb Mon Sep 17 00:00:00 2001
From: Derek Jones
Date: Thu, 7 Oct 2010 09:38:55 -0500
Subject: added elements() to the Array Helper to return elements from an array
with specified keys only. Differs from array_intersect_assoc() in that a
default value can be provided for keys that do not exist in the supplied
array
---
system/helpers/array_helper.php | 40 ++++++++++++++++++++++++++++
user_guide/changelog.html | 1 +
user_guide/helpers/array_helper.html | 51 ++++++++++++++++++++++++++++++++++++
3 files changed, 92 insertions(+)
diff --git a/system/helpers/array_helper.php b/system/helpers/array_helper.php
index bd30b7c16..447ee1aa4 100644
--- a/system/helpers/array_helper.php
+++ b/system/helpers/array_helper.php
@@ -73,6 +73,46 @@ if ( ! function_exists('random_element'))
}
}
+// --------------------------------------------------------------------
+
+/**
+ * Elements
+ *
+ * Returns only the array items specified. Will return a default value if
+ * it is not set.
+ *
+ * @access public
+ * @param array
+ * @param array
+ * @param mixed
+ * @return mixed depends on what the array contains
+ */
+if ( ! function_exists('elements'))
+{
+ function elements($items, $array, $default = FALSE)
+ {
+ $return = array();
+
+ if ( ! is_array($items))
+ {
+ $items = array($items);
+ }
+
+ foreach ($items as $item)
+ {
+ if (isset($array[$item]))
+ {
+ $return[$item] = $array[$item];
+ }
+ else
+ {
+ $return[$item] = $default;
+ }
+ }
+
+ return $return;
+ }
+}
/* End of file array_helper.php */
/* Location: ./system/helpers/array_helper.php */
\ No newline at end of file
diff --git a/user_guide/changelog.html b/user_guide/changelog.html
index 8a275dda2..8c052572a 100644
--- a/user_guide/changelog.html
+++ b/user_guide/changelog.html
@@ -139,6 +139,7 @@ Hg Tag:
If CSRF is enabled in the application config file, form_open() will automatically insert it as a hidden field.
Added sanitize_filename() into the Security helper.
Added ellipsize() to the Text Helper
+ Added elements() to the Array Helper
Other Changes
diff --git a/user_guide/helpers/array_helper.html b/user_guide/helpers/array_helper.html
index c0bdd78e3..6d95c4a5f 100644
--- a/user_guide/helpers/array_helper.html
+++ b/user_guide/helpers/array_helper.html
@@ -100,7 +100,58 @@ echo element('size', $array, NULL);
echo random_element($quotes);
+elements()
+Lets you fetch a number of items from an array. The function tests whether each of the array indices is set. If an index does not exist
+it is set to FALSE, or whatever you've specified as the default value via the third parameter. Example:
+
+
+$array = array(
+ 'color' => 'red',
+ 'shape' => 'round',
+ 'radius' => '10',
+ 'diameter' => '20'
+);
+
+$my_shape = elements(array('color', 'shape', 'height'), $array);
+
+
+The above will return the following array:
+
+
+array(
+ 'color' => 'red',
+ 'shape' => 'round',
+ 'height' => FALSE
+);
+
+
+You can set the third parameter to any default value you like:
+
+
+$my_shape = elements(array('color', 'shape', 'height'), $array, NULL);
+
+
+The above will return the following array:
+
+
+array(
+ 'color' => 'red',
+ 'shape' => 'round',
+ 'height' => NULL
+);
+
+
+This is useful when sending the $_POST array to one of your Models. This prevents users from
+sending additional POST data to be entered into your tables:
+
+
+$this->load->model('post_model');
+
+$this->post_model->update(elements(array('id', 'title', 'content'), $_POST));
+
+
+This ensures that only the id, title and content fields are sent to be updated.
--
cgit v1.2.3-24-g4f1b