在保持键的同时反转数组值

pzi*_*ind 11 php arrays reverse

这是我有一个数组:

$a = array('a' => 'a1', 'b' => 'a2', 'c' => 'a3', 'd' => 'a4', 'e' => 'a5');
Run Code Online (Sandbox Code Playgroud)

我想要做的是在保持密钥完整的同时反转数组的值,换句话说它应该如下所示:

$a = array('a' => 'a5', 'b' => 'a4', 'c' => 'a3', 'd' => 'a2', 'e' => 'a1');
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

PS我尝试使用array_reverse()但似乎没有用

Sve*_*ven 25

使用本机PHP函数进行一些逐步处理(可以使用较少的变量进行压缩):

$a = array('a' => 'a1', 'b' => 'a2', 'c' => 'a3', 'd' => 'a4', 'e' => 'a5');

$k = array_keys($a);
$v = array_values($a);

$rv = array_reverse($v);

$b = array_combine($k, $rv);

var_dump($b);
Run Code Online (Sandbox Code Playgroud)

结果:

array(5) {
  'a' =>
  string(2) "a5"
  'b' =>
  string(2) "a4"
  'c' =>
  string(2) "a3"
  'd' =>
  string(2) "a2"
  'e' =>
  string(2) "a1"
}
Run Code Online (Sandbox Code Playgroud)

  • array_reverse实际上有一个第二个参数`preserve keys`,它在一次调用中完全相同.`$ rv = array_reverse($ v,true);` (11认同)
  • @lifecoder你错过了问题的中心点:不应该反转键,只有值. (4认同)

C. *_* E. 8

这可以通过使用array_combine,array_values,array_keysarray_values.对于一个简单的任务来说,似乎有很多功能,但可能有更简单的方法.

array_combine( array_keys( $a ), array_reverse( array_values( $a ) ) );
Run Code Online (Sandbox Code Playgroud)