PHP数组foreach循环如何实现逆序访问?

一、总结

1、array_reverse($array) :foreach(array_reverse($array) as $key=>$value) 。

 

二、PHP数组foreach循环如何实现逆序访问?

简单的一个php数组函数,之前没这个需要一直都不知道有这么一个函数,擦汗...



php数组逆序输出代码


  1. foreach(array_reverse($array) as $key=>$value){ 
  2. echo $value.' '; 


 




array_reverse

(PHP 4, PHP 5)

array_reverse — 返回一个单元顺序相反的数组



说明


array array_reverse ( array $array [, bool $preserve_keys ] )


array_reverse() 接受数组 array 作为输入并返回一个单元为相反顺序的新数组,如果 preserve_keys 为 TRUE 则保留原来的键名。



Example #1 array_reverse() 例子



​<?php
$input  = array("php", 4.0, array("green", "red"));
$result = array_reverse($input);
$result_keyed = array_reverse($input,true);
?>​



这将使 $result 和 $result_keyed 具有相同的单元,但是注意键名的区别。$result 和 $result_keyed 的打印输出显示分别为:




Array
(
[0] => Array
(
[0] => green
[1] => red
)

[1] => 4
[2] => php
)
Array
(
[2] => Array
(
[0] => green
[1] => red
)

[1] => 4
[0] => php
)


Note: 第二个参数是 PHP 4.0.3 中新加的。


 

总结:

 

如果 array_reverse($arr) 不行,就用 array_reverse($arr,true)

 

 

三、php参考手册:array_reverse



array_reverse

(PHP 4, PHP 5, PHP 7)

array_reverse — 返回单元顺序相反的数组



说明​​ ​


array array_reverse ( array ​​$array​​ [, bool ​​$preserve_keys​​ = false ] )


array_reverse() 接受数组 ​​array​​ 作为输入并返回一个单元为相反顺序的新数组。



参数​​ ​

​array​

输入的数组。

​preserve_keys​

如果设置为 ​TRUE​ 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。



返回值​​ ​

返回反转后的数组。



范例​​ ​



Example #1 array_reverse() 例子



​<?php
$input  = array("php", 4.0, array("green", "red"));
$reversed = array_reverse($input);
$preserved = array_reverse($input, true);

print_r($input);
print_r($reversed);
print_r($preserved);
?>​



以上例程会输出:




Array
(
[0] => php
[1] => 4
[2] => Array
(
[0] => green
[1] => red
)

)
Array
(
[0] => Array
(
[0] => green
[1] => red
)

[1] => 4
[2] => php
)
Array
(
[2] => Array
(
[0] => green
[1] => red
)

[1] => 4
[0] => php
)


 

四、测试题-简答题

1、array_reverse()数组会影响到二维数组的第二维么?

解答:不会,只影响第一维。

2、​​array_reverse($input, true);​​中的true的作用是什么?

解答:true对应的参数是​​preserve_keys​​,如果设置为true,​TRUE​ 会保留数字的键。 非数字的键则不受这个设置的影响,总是会被保留。

也就是说数组逆序了,但是数字键和值的对应关系并没有改变。

3、​​array_reverse($input);会改变键和值的对应关系么?​

解答:如果有数字key,则会按照reverse后的value顺序重新指定,如果全是非数字的key,则不会改变。