php里面有个函数可以反转数组,工作中也经常用到,非常方便。今天来自己实现这样的功能。

$arr = [2,5,6,1,8,16,12];
function reverse($arr){
$left = 0;
$right = count($arr) -1;
$temp = [];
while ($left <= $right){
$temp[$left] = $arr[$right];
$temp[$right] = $arr[$left];
$left++;
$right--;
}
ksort($temp);
return $temp;
} 效果 Array
(
[0] => 12
[1] => 16
[2] => 8
[4] => 6
[5] => 5
[6] => 2
)

不过这个函数只能处理一维数组。在实现一个可以处理多维的。

$arr = [2,[6,3,9],1,[5,2,1,[10,8,7]],5,0];

function reverse_arr($arr){
$index = 0;
$reverse_array = [];
foreach ($arr as $sub_arr){
if(is_array($sub_arr)){
$sub_arr = reverse($sub_arr);
$arr_ = reverse_arr($sub_arr);
$reverse_array[$index] = $arr_;
}else{
$reverse_array[$index] = $sub_arr;
}
$index++;
}
return $reverse_array;
} print_r(reverse(reverse_arr($arr))); 输出结果
Array
(
[0] => 0
[1] => 5
[2] => Array
(
[0] => Array
(
[0] => 7
[1] => 8
[2] => 10
) [1] => 1
[2] => 2
[3] => 5
) [3] => 1
[4] => Array
(
[0] => 9
[1] => 3
[2] => 6
) [5] => 2
)

上面都是数字索引数组,不能处理关联数组,接着来个可以处理关联数组的

$arr = ['a'=>'aa','b'=>'bb','c'=>'cc','d'=>'dd','e'=>'ee'];
function reverse($arr){
$temp = [];
end($arr);
while (($value = current($arr)) != null){
$temp[key($arr)] = $value;
prev($arr);
}
return $temp;
}
print_r(reverse($arr)); 结果
Array
(
[e] => ee
[d] => dd
[c] => cc
[b] => bb
[a] => aa
)

【php】php实现数组反转的更多相关文章

  1. js数组反转

    var _li = test.getElementsByTagName("li"), arrayObj = [].slice.apply(_li),//_li用apply调用sli ...

  2. golang 数组反转

    我做hackerearth上题目记录,具体的题目描述是这样的: Given the size and the elements of array A, print all the elements i ...

  3. Java-Runoob-高级教程-实例-数组:04. Java 实例 – 数组反转

    ylbtech-Java-Runoob-高级教程-实例-数组:04. Java 实例 – 数组反转 1.返回顶部 1. Java 实例 - 数组反转  Java 实例 以下实例中我们使用 Collec ...

  4. 数据结构中数组反转与STL库Algorithm中的reverse

    数组是个基本的线性数据结构,其实是内存中的一个块,我们可以通过c++的new来分配一个数组 int* a= new int[5]; 然后填数组的每个元素 a[0]=1; a[1]=2; a[2]=6; ...

  5. Java数组反转

    public static void reverseArr(int[] arr) { /* 循环中定义变量min=0最小索引 max=arr.length‐1最大索引 min++,max‐‐ */ f ...

  6. C#数组反转

    static void Main(string[] arr) { string[] names = { "老杨1", "老李2", "老王3" ...

  7. PHP 数组反转(值有重复)

    public function indexssss() { $a=[ 'Input.txt' => 'Randy', 'Code.py' => 'Stan', 'Output.txt' = ...

  8. php数组合并,反转,去重,添加元素等;

    //参数默认值//function abc($a,$b,$c = 0){// echo $a,$b,$c;//}//abc(1,3);//结果等于130://echo "<br> ...

  9. Java_基础篇(数组的反转)

    数组反转也是Java的基础. 数组反转要求掌握的是: 1).创建一个数组,在内存中申请一块空间. 2).实例化数组. 3).对数组的了解.如:数组的长度,数组的下标,数组的表示方法. 4).数组的交换 ...

随机推荐

  1. 优化MySQL性能的几种方法-总结

    原文:http://bbs.landingbj.com/t-0-245601-1.html 1.要选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越 小,在它上 ...

  2. java8新特性:interface中的static方法和default方法

    java8中接口有两个新特性,一个是静态方法,一个是默认方法. static方法 java8中为接口新增了一项功能:定义一个或者多个静态方法. 定义用法和普通的static方法一样: public i ...

  3. CMake--常用指令

    1 . ADD_DEFINITIONS 向 C/C++ 编译器添加 -D 定义,比如 在CMakeList.txt文件中添加: ADD_DEFINITIONS(-DENABLE_DEBUG -DABC ...

  4. MyBatis映射文件5

    返回map     Map<String,Object> getEmpByResMap(Integer id); <select id="getEmpByResMap&qu ...

  5. IntelliJ IDEA启动Tomcat后,却无法访问Tomcat主页 等一系列问题

    1.IntelliJ IDEA启动Tomcat后,却无法访问Tomcat主页 转:http://www.myexception.cn/other/1998827.html https://blog.c ...

  6. uname -r查询版本不是安装的版本的问题

    uname -r 查出来的版本与/lib/modules下面的内核版本不匹配.啥原因? 第一步,先strace uname -r看看这个uname -r到底从哪里获取的版本. strace没有看出来 ...

  7. 集合之TreeSet(含JDK1.8源码分析)

    一.前言 前面分析了Set接口下的hashSet和linkedHashSet,下面接着来看treeSet,treeSet的底层实现是基于treeMap的. 四个关注点在treeSet上的答案 二.tr ...

  8. 初识GetMapping(""),使用方法

    GetMapping("value = /SF/{x_num}")与GetMapping("/SF/{x_num}")通过POSTMAN获得的值一样. 注意:G ...

  9. 一、VS2017支持Github

    选择 工具-->扩展和更新,搜索GitHub,安装GitHub的VS插件 安装完插件,打开视图-->团队资源管理器,我们可以看到Git插件菜单.通过菜单我们可以新建Git存储库,可以提交修 ...

  10. openblas下载安装编译

    编译好的库: https://github.com/JuliaLinearAlgebra/OpenBLASBuilder/releases 源码编译 下载:https://github.com/xia ...