迭代反转php关联数组

时间:2016-07-06 13:20:21

标签: php arrays

如何通过php关联数组反向迭代? https://stackoverflow.com/a/10777617/1032531为非关联数组提供解决方案。

我的尝试:

$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

2 个答案:

答案 0 :(得分:4)

只需使用$a=array_reverse($a,true);代替$a=array_reverse($a);即可获得密钥。

array_reverse()有保留键的第二个可选参数。默认值为false。

阅读doc here

答案 1 :(得分:2)

你非常接近 - 你已经掌握了所有关键词 - 只需要记住PHP手册是你的朋友:)

manual page for array_reverse列出了一个可选参数$preserve_keys,默认为false。

因此,您只需将$a=array_reverse($a);更改为$a=array_reverse($a, true);即可获得您所追求的结果。