2011-11-21 78 views
1

请你能帮助我:特殊排列顺序

我有一个数组排序的关键:

$a['a'] = value; 
$a['b'] = value; 
$a['c'] = value; 
$a['d'] = value; 
$a['e'] = value; 

我需要通过这个规则reordeer此 - 举一个领域,把它放在第一个地方,另一个不改变

fe

$a['c'] = value; 
$a['a'] = value; 
$a['b'] = value; 
$a['d'] = value; 
$a['e'] = value; 

$a['d'] = value; 
$a['a'] = value; 
$a['b'] = value; 
$a['c'] = value; 
$a['e'] = value; 
+0

你的问题很模糊,你是否想要改变键的顺序,以便当你循环它们时,它们以你想要的顺序使用? –

+0

请提供更多详情 – Prasanth

回答

1

认为你的意思是这样的:

function get_and_place_first($index, $array) { 
    $new_first_element = $array[$index];  // save element you want to have as first 
    unset($array[$index]);      // delete that element from old position 
    array_unshift($array, $new_first_element); // place it at the beginning of $array 
} 

你应该这样使用它:

get_and_place_first('c', $a); 

,你应该从你的第一个例子预期的效果。当然你可能想要检查给定数组中是否存在元素等,但这取决于你。

+0

超级,就是这样!谢谢 – Tom

0

试试从http://ykyuen.wordpress.com/2011/09/16/php-swap-array-elements-by-array-keys/

function array_swap_assoc($key1, $key2, $array) { 
    $newArray = array(); 
    foreach ($array as $key => $value) { 
    if ($key == $key1) { 
     $newArray[$key2] = $array[$key2]; 
    } elseif ($key == $key2) { 
     $newArray[$key1] = $array[$key1]; 
    } else { 
     $newArray[$key] = $value; 
    } 
    } 
    return $newArray; 
} 

代码示例这个功能:

<?php 
    $temp = array('a' => 'A', 'b' => 'B'); 
    $temp = array_swap_assoc('a', 'b', $temp); 
    print_r($temp); 
?>