2013-05-03 67 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; 
相关问题