2014-02-28 135 views
0

我有一個數組值,類似於;按值更改數組索引並重新排序

$array = array(1,2,3,4); 

我希望能夠重新定位元素並重新排序。
編輯:爲了清楚這一點,我不只是想旋轉元素,我想要移動一個元素到數組中的新位置,並保持其他元素的順序。例如, ;

// move value 3 to index[1], result 
$array(1,3,2,4); 
// or move value 1 to index[3], result 
$array[2,3,4,1); 

爲了使其更清楚,如果需要的話;

$array('alice','bob','colin','dave'); 
// move value 'colin' to index[1], result 
$array('alice','colin','bob','dave'); 
// or move value 'alice' to index[3], result 
$array('bob','colin','dave', 'alice'); 

任何想法請。

+0

片和剪接? – putvande

+0

只是爲了澄清:你想獲得一個價值,並將其轉移到一個特定的索引? –

+0

@JosefOttosson,是的。如果可能的話,我想選擇按其價值移動的東西。 – Rooneyl

回答

1

這是從由用戶hakre另一個StackOverflow的線程複製,但該功能應該工作:

$array = array(1,2,3,4); 
function moveElement(&$array, $a, $b) { 
    $out = array_splice($array, $a, 1); 
    array_splice($array, $b, 0, $out); 
} 

moveElement($array, 3, 1); // would move the value of the element at position [3] (the number 4 in the array example) to position [1] 
//would output: Array ([0] => 1 [1] => 4 [2] => 2 [3] => 3) 

它以$陣列陣列中重新定位元件3 [1]在該示例的位置。使用函數參數將任何元素值(在示例3中)移動到您希望的任何位置(在示例1中)。

+0

你試過了嗎? – putvande

+1

是的。謹慎詳細說明你的評論? – Jack

+0

這將導致'1,4,2,3'。 – putvande

1

試試這個代碼:

function swap_value(&$array,$first_index,$last_index){ 
    $save=$array[$first_index]; 
    $array[$first_index]=$array[$last_index]; 
    $array[$last_index]=$save; 
    return $array; 
} 
$array = array(1,2,3,4); 
var_dump(swap_value($array,1,2)); 
var_dump(swap_value($array,0,2)); 
+0

至少會在關聯數組上失敗(因爲交換值而不是鍵)。另外鍵還沒有被觸動(所以值將被交換,而鍵不會) –

+0

@AlmaDo Ok.Changed函數名稱爲'swap_value' :-) – ops

+0

@yonessafari這只是swops,而不是重新排序。 http://codepad.org/wgZrHJEo – Rooneyl