关联数组将最后一个元素移动到第一个位置

9

我有一个数组

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

我想创建一个像这样的东西。
array(
'key3'=>'value3',
'key1'=>'value1',
'key2'=>'value2'
)

我只想将最后一个元素移到第一个位置,并保留键值对和其他所有细节不变。

5
你和你的代码都不应该关心或了解关联数组的键的顺序——通常是未指定的,而且也无关紧要。如果你关心顺序,请使用数字数组。 - michaelb958--GoFundMonica
不,它不是一个数字数组。 - Satyendra Mishra
这是一个关联数组。 实际上,这不是我的真实数组。 - Satyendra Mishra
实际的数组非常大,所以我只输入了一个样本。无论如何,我从下面提到的帖子中得到了答案。 - Satyendra Mishra
1
在我看来,这个问题应该重新开放,但我没有足够的声望来这样做。提供的关闭原因是荒谬的 - 这非常清晰且可回答。在某些情况下,这确实很重要:考虑一个包含50个州('AK' => 'Alaska')的数组,它是未排序的。使用 foreach 输出将以未排序的方式输出。通过 PHP 手册的 ksort() 实现,对关联数组进行排序/确定顺序是鼓励的,它明确指出对于关联数组非常有用 - HPierce
显示剩余2条评论
5个回答

16

只需要把它剪切并合并到开头即可。

$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"
}

13

如何以最简单的方式处理下面的代码

$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
)

3
快捷而干净,将最后一个元素移动到第一个位置: $element = array_pop( $array ); array_unshift( $array, $element ); - elvismdev
将数组末尾元素弹出并插入到数组开头。 - alsator
这个从来没对我起作用。试试这个:array_unshift($hoursArray,$hoursArray[sizeof($hoursArray)-1]); array_pop($hoursArray); - Ariel Terrani

0
使用函数array_reverse()来反转数组, 例如:

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

我不必要翻转整个数组。 - Satyendra Mishra
对于简单的工作来说,过于复杂了。 - Notepad

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

首先跳转到最后一个项目或数组,为此使用end(最快的方法)。现在获取键、值,然后将其删除并添加到顶部。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接