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 $success * @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 success, 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; } }