2011-11-21 141 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); 
?>