/**
* arrays.php
*
- * Copyright (c) 2004 The SquirrelMail Project Team
- * Licensed under the GNU GPL. For full terms see the file COPYING.
- *
* Contains utility functions for array operations
*
+ * @copyright © 2004-2007 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
*/
*/
function sqm_array_swap_values(&$a,$v1,$v2) {
$r = false;
- if (in_array($v1,$ar) && in_array($v2,$a)) {
+ if (in_array($v1,$a) && in_array($v2,$a)) {
$k1 = array_search($v1,$a);
$k2 = array_search($v1,$a);
$d = $a[$k1];
* @param array $a (recursive) array
* @param mixed $v value to move
* @param int $p positions to move
- * @return bool $succes
+ * @return bool $success
* @author Marc Groot Koerkamp
*/
function sqm_array_kmove_value(&$a,$v,$p) {
* @param array $a (recursive) array
* @param mixed $v value to move
* @param int $p positions to move
- * @return bool $succes
+ * @return bool $success
* @author Marc Groot Koerkamp
*/
function sqm_array_move_value(&$a,$v,$p) {
*
* @param array $aK array keys
* @param array $aV array values
- * @return mixed $r combined array on succes, false on failure
+ * @return mixed $r combined array on success, false on failure
* @author Marc Groot Koerkamp
*/
function array_combine($aK, $aV) {
}
return $r;
}
-}
\ No newline at end of file
+}
+
+
+ /**
+ * Merges two variables into a single array
+ *
+ * Similar to PHP array_merge function, but provides same
+ * functionality as array_merge without losing array values
+ * with same key names. If the values under identical array
+ * keys are both strings and $concat_strings is TRUE, those
+ * values are concatenated together, otherwise they are placed
+ * in a sub-array and are merged (recursively) in the same manner.
+ *
+ * If either of the elements being merged is not an array,
+ * it will simply be added to the returned array.
+ *
+ * If both values are strings and $concat_strings is TRUE,
+ * a concatenated string is returned instead of an array.
+ *
+ * @param mixed $a First element to be merged
+ * @param mixed $b Second element to be merged
+ * @param boolean $concat_strings Whether or not string values
+ * should be concatenated instead
+ * of added to different array
+ * keys (default TRUE)
+ *
+ * @return array The merged $a and $b in one array
+ *
+ * @since 1.5.2
+ * @author Paul Lesniewski
+ *
+ */
+function sqm_array_merge($a, $b, $concat_strings=true) {
+
+ $ret = array();
+
+ if (is_array($a)) {
+ $ret = $a;
+ } else {
+ if (is_string($a) && is_string($b) && $concat_strings) {
+ return $a . $b;
+ }
+ $ret[] = $a;
+ }
+
+
+ if (is_array($b)) {
+ foreach ($b as $key => $value) {
+ if (isset($ret[$key])) {
+ $ret[$key] = sqm_array_merge($ret[$key], $value, $concat_strings);
+ } else {
+ $ret[$key] = $value;
+ }
+ }
+ } else {
+ $ret[] = $b;
+ }
+
+ return $ret;
+
+}
+
+