искал готовое решение, но как-то не нашёл. суть функции: можно вставить элемент (или массив "ключ-значение") в существующий массив после указанного элемента. PHP: <pre><?php function insertAt(&$arr, $afterMark, $elem) { $pos = array_search($afterMark, $arr); if($pos === FALSE) return 0; if($pos !== FALSE && !is_int($pos)) // если найденный ключ не является числом - массив ассоциативный и ключ найден { $founded = 0; $tmpTail = array(); $head = array(); foreach($arr as $el => $kol) { if($founded) $tmpTail[$el] = $kol; else $head[$el] = $kol; if($el == $pos) $founded = 1; } $arr = $head; }else $tmpTail = array_splice($arr, $pos + 1); if(is_array($elem)) $arr = array_merge($arr, $elem); else $arr[] = $elem; $arr = array_merge($arr, $tmpTail); return 1; } $arr = array(); $arr['oneKey'] = 'one'; $arr['twoKey'] = 'two'; $arr['threeKey'] = 'three'; $arr2 = array(); $arr2[] = 'one'; $arr2[] = 'two'; $arr2[] = 'three'; $t = '2.5'; insertAt($arr, 'two', $t); insertAt($arr2, 'one', 'test'); insertAt($arr2, 'two', array('sw' => $t)); print_r($arr); print_r($arr2); Так вот к чему я это пишу - есть лучшее решение данной задачи? И если нет - то как можно улучшить/оптимизировать эту функцию?