我有一个相当复杂的问题,可能与array_splice
有关,但我无法弄明白。这是我所拥有的数组的一个例子:
array(
'a' => 'Element A',
'b' => 'Element B',
'c' => 'Element C',
'd' => 'Element D',
'e' => 'Element E'
);
我想要做的是根据我选择的键重新排序数组,比如" c",这样最终的结果是:
array(
'c' => 'Element C',
'd' => 'Element D',
'e' => 'Element E',
'a' => 'Element A',
'b' => 'Element B'
);
它基本上将所选键移到前面,同时保持订单完好无损。非常感谢任何帮助!
答案 0 :(得分:2)
array_search()
将获得c
中array_keys()
与数组的偏移量。然后array_slice()
和array_merge()
使用修改后的原始数组:
$array = array_merge(array_slice($array, array_search('c', array_keys($array)), null),
$array);
答案 1 :(得分:0)
不是最好的解决方案,但它有效
$arr = array(
'a' => 'Element A',
'b' => 'Element B',
'c' => 'Element C',
'd' => 'Element D',
'e' => 'Element E'
);
function doIt($key, &$arr)
{
$tmp = array();
$tmp2 = array();
$flag = false;
foreach($arr as $k => $v) {
if($k == $key) {
$flag = true;
}
if($flag) {
$tmp2[$k] = $v;
} else {
$tmp[$k] = $v;
}
}
$arr = array_merge($tmp2, $tmp);
}
doIt('c', $arr);
print_r($arr);
<强>输出:强>
Array
(
[c] => Element C
[d] => Element D
[e] => Element E
[a] => Element A
[b] => Element B
)
答案 2 :(得分:-1)
您应该看到sort()函数的文档:http://php.net/manual/en/function.sort.php
用户贡献笔记&#34;你可能会找到适合你的问题的完美功能!