PHP通过选择第一个项目来重新排序数组

时间:2015-07-27 15:28:20

标签: php arrays

我有一个相当复杂的问题,可能与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'
);

它基本上将所选键移到前面,同时保持订单完好无损。非常感谢任何帮助!

3 个答案:

答案 0 :(得分:2)

array_search()将获得carray_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
)

Fiddle

答案 2 :(得分:-1)

您应该看到sort()函数的文档:http://php.net/manual/en/function.sort.php

用户贡献笔记&#34;你可能会找到适合你的问题的完美功能!