From 87b256e20124701f112cf127aa4969d55d07c1bb Mon Sep 17 00:00:00 2001 From: stekkel Date: Wed, 9 Jun 2004 18:09:47 +0000 Subject: [PATCH] Array utility functions. I use them in options_order.php (commit later) and I'm going to use it to retrieve the prev and next message in read_body.php (commit later) git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@7624 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/arrays.php | 142 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 functions/arrays.php diff --git a/functions/arrays.php b/functions/arrays.php new file mode 100644 index 00000000..8cad523e --- /dev/null +++ b/functions/arrays.php @@ -0,0 +1,142 @@ + 0 && $p_n < count($a_v)) { + $d = $a_v[$k]; + $a_v[$k] = $a_v[$p_n]; + $a_v[$p_n] = $d; + $d = $a_k[$k]; + $a_k[$k] = $a_k[$p_n]; + $a_k[$p_n] = $d; + $r = array_combine($a_k, $a_v); + if ($a !== false) { + $a = $r; + $r = true; + } + } + } + return $r; +} + + /** + * Move array value 2 array values by position. Does not maintain keys + * + * @param array $a (recursive) array + * @param mixed $v value to move + * @param int $p positions to move + * @return bool $succes + * @author Marc Groot Koerkamp + */ +function sqm_array_move_value(&$a,$v,$p) { + $r = false; + $a_v = array_values($a); + if (in_array($v, $a_v)) { + $k = array_search($v, $a_v); + $p_n = $k + $p; + if ($p_n >= 0 && $p_n < count($a_v)) { + $d = $a_v[$k]; + $a_v[$k] = $a_v[$p_n]; + $a_v[$p_n] = $d; + $a = $a_v; + $r = true; + } + } + return $r; +} + + /** + * Retrieve an array value n positions relative to a reference value. + * + * @param array $a array + * @param mixed $v reference value + * @param int $p offset to reference value in positions + * @return mixed $r false on failure (or if the found value is false) + * @author Marc Groot Koerkamp + */ +function sqm_array_get_value_by_offset($a,$v,$p) { + $r = false; + $a_v = array_values($a); + if (in_array($v, $a_v)) { + $k = array_search($v, $a_v); + $p_n = $k + $p; + if ($p_n >= 0 && $p_n < count($a_v)) { + $r = $a_v[$p_n]; + } + } + return $r; +} + + +if (!function_exists('array_combine')) { + /** + * Creates an array by using one array for keys and another for its values (PHP 5) + * + * @param array $aK array keys + * @param array $aV array values + * @return mixed $r combined array on succes, false on failure + * @author Marc Groot Koerkamp + */ + function array_combine($aK, $aV) { + $r = false; + $iCaK = count($aK); + $iCaV = count($aV); + if ($iCaK && $iCaV && $iCaK == $iCaV) { + $aC = array(); + for ($i=0;$i<$iCaK;++$i) { + $aC[$aK[$i]] = $aV[$i]; + } + $r = $aC; + } + return $r; + } +} \ No newline at end of file -- 2.25.1