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

  1. $arr = [2,5,6,1,8,16,12];
  2. function reverse($arr){
  3. $left = 0;
  4. $right = count($arr) -1;
  5. $temp = [];
  6. while ($left <= $right){
  7. $temp[$left] = $arr[$right];
  8. $temp[$right] = $arr[$left];
  9. $left++;
  10. $right--;
  11. }
  12. ksort($temp);
  13. return $temp;
  14. }
  15.  
  16. 效果
  17.  
  18. Array
  19. (
  20. [0] => 12
  21. [1] => 16
  22. [2] => 8
  23. [4] => 6
  24. [5] => 5
  25. [6] => 2
  26. )

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

  1. $arr = [2,[6,3,9],1,[5,2,1,[10,8,7]],5,0];
  2.  
  3. function reverse_arr($arr){
  4. $index = 0;
  5. $reverse_array = [];
  6. foreach ($arr as $sub_arr){
  7. if(is_array($sub_arr)){
  8. $sub_arr = reverse($sub_arr);
  9. $arr_ = reverse_arr($sub_arr);
  10. $reverse_array[$index] = $arr_;
  11. }else{
  12. $reverse_array[$index] = $sub_arr;
  13. }
  14. $index++;
  15. }
  16. return $reverse_array;
  17. }
  18.  
  19. print_r(reverse(reverse_arr($arr)));
  20.  
  21. 输出结果
  1. Array
  2. (
  3. [0] => 0
  4. [1] => 5
  5. [2] => Array
  6. (
  7. [0] => Array
  8. (
  9. [0] => 7
  10. [1] => 8
  11. [2] => 10
  12. )
  13.  
  14. [1] => 1
  15. [2] => 2
  16. [3] => 5
  17. )
  18.  
  19. [3] => 1
  20. [4] => Array
  21. (
  22. [0] => 9
  23. [1] => 3
  24. [2] => 6
  25. )
  26.  
  27. [5] => 2
  28. )

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

  1. $arr = ['a'=>'aa','b'=>'bb','c'=>'cc','d'=>'dd','e'=>'ee'];
  2. function reverse($arr){
  3. $temp = [];
  4. end($arr);
  5. while (($value = current($arr)) != null){
  6. $temp[key($arr)] = $value;
  7. prev($arr);
  8. }
  9. return $temp;
  10. }
  11. print_r(reverse($arr));
  12.  
  13. 结果
  14. Array
  15. (
  16. [e] => ee
  17. [d] => dd
  18. [c] => cc
  19. [b] => bb
  20. [a] => aa
  21. )

【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. Mixing x86 with x64 code (混合编写x86和x64代码)

    几个月前我小小的研究了在WOW64下的32位进程中运行native x64代码. 第二个设想是在64位进程下运行x86代码.它们都是可以的,如我google的一样, 已经有人在使用这两种方法了: ht ...

  2. 微信小程序开发的基本流程

    微信小程序开发的基本流程 一,微信小程序简介 1,微信小程序简称小程序,张小龙在微信公开课 Pro 上发布的小程序正式上线,时间是2017年1月9日. 2,微信小程序这个词可以分解为“微信”和“小程序 ...

  3. Windows10 等 administrator 打开IE 或者edge的方法

    gpedit.msc 组策略处理即可

  4. Setting property 'source' to 'org.eclipse.jst.jee.server:hczm' did not find a matching property

  5. python 列表、元组、字典

    一.列表 [ ] 如下的列子都可以成为列表,c=[1,2,3,4,5,6],d=["abc", "张三",“李四”],e=[1,2,3,"abc&qu ...

  6. Python实现百度贴吧自动顶贴机

    开发这款小工具,我们需要做一些准备: url.txt:多个需要顶起的帖子地址. reply:多条随机回复的内容. selenium:浏览器自动化测试框架 首先,我们先使用pip完成selenium的安 ...

  7. python数学第四天【古典概型】

  8. APP test

    在讲APP测试之前,先讲一下,目前APP的操作系统以及APP相关基础知识. 一.APP基础知识 1.操作系统# 现在移动端的操作系统主流的分为两种:(1)安卓系统 (2)IOS系统. 2.安卓系统# ...

  9. Delphi之TComponent类

    TComponent类 TComponent类直接由TPersistent派生.TComponent的独特特征是它的属性能够在设计期间通过ObjectInspector来控制,能够拥有其他组件.非可视 ...

  10. thinkphp5 实现搜索分页能下一页保留搜索条件

    正常情况下: 搜索后分页了,点击第二页,进入页面之前的搜索条件没有了. 如代码 $keywords=$this->request->param('keywords'); $this-> ...