CodeIgniter Forums
Pre- or appending arrays and preserving key => value pairs - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Archived Discussions (https://forum.codeigniter.com/forum-20.html)
+--- Forum: Archived Libraries & Helpers (https://forum.codeigniter.com/forum-22.html)
+--- Thread: Pre- or appending arrays and preserving key => value pairs (/thread-57825.html)



Pre- or appending arrays and preserving key => value pairs - El Forum - 04-15-2013

[eluser]GrahamDj28[/eluser]
Hi,

Maybe somebody has already posted something like this, but i could not really find a solution for this.
So I made my own function and would like to share it with all of you!

We all know the array_merge and array_merge_recursive for merging arrays. They both work fine. What i was looking for was a function for prepending or appending values onto an existing array while preserving key => value pairs. When using string keys array_unshift is no problem. But I often have id => title pairs for using in a form select. And then you can't use array_unshift for prepending extra data onto it.

My solution
Code:
/**
  * Merge array's while preserving key => value pairs
  *
  * <p>
  * If prepend is true, the source will be added to the append array
  * If prepend is false, the append will be added to the source array
  * </p>
  *
  * @param array $append, values that must be added
  * @param array $source, the source array
  * @param boolean $prepend
  */
function merge_array($append, $source, $prepend = TRUE) {
  if($prepend) {
   foreach($source as $key => $value) {
    $append[$key] = $value;
   }
  
   return $append;
  } else {
   foreach($append as $key => $value) {
    $source[$key] = $value;
   }
  
   return $source;
  }
}

As you can see there is no check if a key already exists, as I only use this function to prepend an empty select option
(''=>Please make a choise) for a required form select

Hope this can help somebody