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之慢查询日志和通用查询

    MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1.通用查询日志:记录建立的客户端连接和执行的语句. 2.慢查 ...

  2. 上传图片(photoClip)

    首先我们需要引入4个js包(这4个包总共106.6KB) <script src="__STATIC__/hammer.min.js" ></script> ...

  3. 使用PL/SQL连接Oracle时报错ORA-12541: TNS: 无监听程序

    因公司需求,安装oracle数据库,oracle数据库用账号密码可以登录,然后在pl/sql里面不能登录,显示无监听程序. 这就说明可能有些服务没有启动,开始运行services.msc ,进入后寻找 ...

  4. axios的增删改查。

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. spring mvc常用注解总结

    1.@RequestMapping@RequestMappingRequestMapping是一个用来处理请求地址映射的注解(将请求映射到对应的控制器方法中),可用于类或方法上.用于类上,表示类中的所 ...

  6. app自动化测试Appium+python

    一.node.js安装 https://nodejs.org/en/download/ ##一直下一步 ###cmd查看 二.  .NET Framework安装 https://www.micros ...

  7. python设计模式第二十天【模版方法模式】

    1.应用场景 (1)具有相同的操作,但是步骤中具有不同的操作细节 2.代码实现 #!/usr/bin/env python #! _*_ coding:UTF-8 _*_ from abc impor ...

  8. Maven最佳实战

    Maven中内置的隐藏变量: http://www.cnblogs.com/quanyongan/category/471332.html Maven提供了三个隐式的变量可以用来访问环境变量,POM信 ...

  9. Ubuntu下安装tomcat

    下面记录了Ubuntu 16.04下安装Tomcat 8.5.9的过程步骤. 1.到官网下载tomcat8.5.9,选择格式为tar.gz.2.通过ftp将下载的tomcat8.5.9压缩包上传到ub ...

  10. JarvisOJ BASIC -.-字符串

    请选手观察以下密文并转换成flag形式 ..-. .-.. .- --. ..... ..--- ..--- ----- .---- ---.. -.. -.... -.... ..... ...-- ...