It was difficult, but finally
<?php function array_splice_assoc(&$input, $offset, $length, $replacement) { $replacement = (array) $replacement; $key_indices = array_flip(array_keys($input)); if (isset($input[$offset]) && is_string($offset)) { $offset = $key_indices[$offset]; } if (isset($input[$length]) && is_string($length)) { $length = $key_indices[$length] - $offset; } $input = array_slice($input, 0, $offset, TRUE) + $replacement + array_slice($input, $offset + $length, NULL, TRUE); } function array_move($which, $where, $array) { $tmpWhich = $which; $j=0; $keys = array_keys($array); for($i=0;$i<count($array);$i++) { if($keys[$i]==$tmpWhich) $tmpWhich = $j; else $j++; } $tmp = array_splice($array, $tmpWhich, 1); array_splice_assoc($array, $where, 0, $tmp); return $array; } $array = array('fruits' => 'apple','vegetables' => 'garlic','nuts' => 'cashew','meat' => 'beaf'); $res = array_move('vegetables',2,$array); var_dump($res); ?>
source share