在PHP关联数组中反向迭代。

4
如何在php关联数组中进行反向迭代?https://dev59.com/o2gv5IYBdhLWcg3wMN-0#10777617 提供了非关联数组的解决方案。
我的尝试:
$a=['5'=>'five','3'=>'three','7'=>'seven'];
var_dump($a);
foreach($a as $k=>$v){echo("$k $v\n");}
$a=array_reverse($a);
var_dump($a);
foreach($a as $k=>$v){echo("$k $v\n");}

产生以下结果:
array(3) {
  [5]=>
  string(4) "five"
  [3]=>
  string(5) "three"
  [7]=>
  string(5) "seven"
}
5 five
3 three
7 seven
array(3) {
  [0]=>
  string(5) "seven"
  [1]=>
  string(5) "three"
  [2]=>
  string(4) "five"
}
0 seven
1 three
2 five

我希望保留这些密钥并返回它们。
array(3) {
  [5]=>
  string(4) "five"
  [3]=>
  string(5) "three"
  [7]=>
  string(5) "seven"
}
5 five
3 three
7 seven
array(3) {
  [7]=>
  string(5) "seven"
  [3]=>
  string(5) "three"
  [5]=>
  string(4) "five"
}
7 seven
3 three
5 five

为什么不使用array_reverse并迭代呢? - Sachin Gadagi
2个回答

7
只需使用$a=array_reverse($a,true);而不是$a=array_reverse($a);以保留键。 array_reverse()有一个可选的第二个参数来保留键。默认值为false。
这里阅读文档

完美!谢谢。 - user1032531

2
你已经非常接近了 - 你已经掌握了所有关键词 - 只需要记住PHP手册就可以了 :) array_reverse的手册页面列出了一个可选参数$preserve_keys,默认为false。
所以你只需要将$a=array_reverse($a);更改为$a=array_reverse($a, true);,你应该得到你想要的结果。

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