2012-07-07 84 views
0

是否有PHP函数来移动数组键/值对并使其成为数组中的第一个元素。重新排序数组的PHP函数

基本上,我会想转换

Array 
(
    [a] => rose 
    [b] => tulip 
    [c] => dahlia 
    [d] => peony 
    [e] => magnolia 
) 

Array 
(
    [c] => dahlia 
    [a] => rose 
    [b] => tulip 
    [d] => peony 
    [e] => magnolia 
) 

为了澄清,其目的是选择一个特定的键/值对和移动它成为第一,同时保持索引订单的其余部分完好无损。

因此,在这种情况下,我在寻找类似

$old_array = Array 
    (
     [a] => rose 
     [b] => tulip 
     [c] => dahlia 
     [d] => peony 
     [e] => magnolia 
    ); 
$new_array = some_func($old_array, 'c'); 

在$ new_array,“C”应该是第一个在列表中。

关于'some_func()'代码的任何想法?

+0

可能重复[在PHP中将数组元素移动到顶部](http://stackoverflow.com/questions/5312879/moving-array-element-to-top-in-php) – FoamyGuy 2012-07-10 01:50:00

回答

1

这可能对您有所帮助:的

function myfun($ar,$key){ 
    if (array_key_exists($key,$ar)) { 
     $arr_tmp = array($key => $ar[$key]); 
     unset($ar[$key]); 
     return $arr_tmp + $ar;   
    } 
} 
2

如果你只想把一个元素第一,那么你可以做:

function some_func($array, $key) { 
    $tmp = array($key => $array[$key]); 
    unset($array[$key]); 
    return $tmp + $array; 
} 
+0

在出现想要被喂食的所有风险的情况下,我没有任何排序逻辑,除了只想传递一个键并将该键(加上相关值)移动到第一个索引位置之外。你能帮忙吗? – Dayo 2012-07-07 15:31:32

+0

@Dayo我为你的要求写了'some_func' :) – xdazz 2012-07-07 15:32:20

+0

PHP的排序算法不稳定,所以在这种情况下使用它并不是很微不足道。您必须在排序之前对每个元素进行索引,以便保存顺序。一个不排序的答案可能是最有效的。 – Matthew 2012-07-07 15:36:10

1
function some_func($arr, $key) { 
    $val = $arr[$key]; 
    unset($arr[$key]); 
    return array_merge(array($key => $val), $arr); 
} 

See it on codepad

+0

链接到键盘的大道具! – Dayo 2012-07-07 16:28:07