2013-05-03 100 views
1

我有一個數組關聯數組最後一個元素移至第一

array(
'key1'=>'value1', 
'key2'=>'value2', 
'key3'=>'value3' 
) 

我要像

array(
'key3'=>'value3', 
'key1'=>'value1', 
'key2'=>'value2' 
) 

創建它,我只是想和鍵值對保持所有其他先動的最後一個元素細節照原樣。

+5

您或您的代碼都不應該知道或關心關聯數組的密鑰的順序 - 通常它沒有指定,反正也沒關係。如果您關心訂單,請使用數字數組。 – michaelb958 2013-05-03 12:03:48

+0

不是它的數字數組。 – 2013-05-04 15:03:29

+0

它是一個關聯數組。 實際上這不是我真正的陣列。 – 2013-05-04 15:04:31

回答

7

最簡單的方式做下面的代碼

$arr = array(
'key1'=>'value1', 
'key2'=>'value2', 
'key3'=>'value3' 
); 

$lastvalue = end($arr); 
$lastkey = key($arr); 

$arr1 = array($lastkey=>$lastvalue); 

array_pop($arr); 

$arr1 = array_merge($arr1,$arr); 

輸出

Array 
(
    [key3] => value3 
    [key1] => value1 
    [key2] => value2 
) 

讓我知道如果我能幫助你更

+0

是的,它真的幫助。 – 2013-05-04 14:45:55

+0

謝謝,很高興幫助你。 – liyakat 2013-05-05 16:35:36

+3

快速乾淨,最後移動到第一個元素: $ element = array_pop($ array); array_unshift($ array,$ element); – elvismdev 2017-09-11 09:56:58

2

剪接它的僅有的問題,並將其合併到開始

$array = array(
    'key1' => 'value1', 
    'key2' => 'value2', 
    'key3' => 'value3' 
); 

$newArray = array_merge(array_splice($array, -1), $array); 

var_dump($newArray); 

輸出:

array(3) { 
    ["key3"]=> 
    string(6) "value3" 
    ["key1"]=> 
    string(6) "value1" 
    ["key2"]=> 
    string(6) "value2" 
} 
0

用戶功能array_reverse()扭轉陣列, 喜歡:

<?php 
$arr=array(
    'key1'=>'value1', 
    'key2'=>'value2', 
    'key3'=>'value3' 
); 
$reversed = array_reverse($arr); 
echo "<pre>"; 
print_r($reversed); 
?> 
+0

我不必扭轉整個陣列。 – 2013-05-03 12:15:23

+0

簡單的工作太複雜了。 – Notepad 2013-05-03 19:24:39

0
$array = array(
    'key1' => 'value1', 
    'key2' => 'value2', 
    'key3' => 'value3' 
); 

$count = 1; 
foreach ($array as $k => $v) { 
    if ($count == 1) 
     $first[$k] = $v; 
    if ($count == count($array)) 
     $last[$k] = $v; 

    $count++; 
} 

array_shift($array); 
array_pop($array); 
$final = array_merge($last, $array, $first); 
print_r($final); 
0

第一轉到最後一個項目或陣列,使用結束(最快的國家之一)爲此目的。現在獲取密鑰,然後將其刪除並添加到頂部。

$last_val = end($original_array); 
$last_key = key($original_array); 
unset($original_array[$key]); 
$new_array = array($last_key => $last_val) + $original_array; 
相關問題