1. <?php
  2. //一维数组
  3. $test1 = array("a"=>"苹果","b"=>"香蕉","c"=>"芒果");
  4.  
  5. //二位数组
  6. $test2[0] = array("id"=>"17","name"=>"汽车");
  7. $test2[99] = array("id"=>"18","name"=>"飞机");
  8. $test2[2] = array("id"=>"19","name"=>"高铁");
  9. $test2[3] = array("id"=>"20","name"=>"高铁");
  10.  
  11. //三维数组
  12. $test3 = array("aaa"=>$test1,"bbb"=>$test2);
  13.  
  14. /*
  15. arr:数组
  16. isvalues:是否将数组key值重新排列
  17. */
  18.  
  19. //数组倒叙
  20. function array_rsort($arr,$isvalues=false)
  21. {
  22. if(is_array($arr)){
  23. $flag = false;
  24. //一维数组
  25. if(count($arr) == count($arr,1)){
  26. $flag = true;
  27. $i = 0;
  28. //转换成二维数组
  29. foreach($arr AS $key=>$value){
  30. $a[$i]["okey"] = $key;
  31. $a[$i]["value"] = $value;
  32. $i++;
  33. }
  34. $arr = $a;
  35. }
  36. //多维数组
  37. else
  38. {
  39. //添加临时key值
  40. foreach($arr AS $key=>$value){
  41. $value["okey"] = $key;
  42. $array[] = $value;
  43. }
  44. $arr = $array;
  45. }
  46.  
  47. //倒叙并还原key值
  48. $count = count($arr)-1;
  49. for($i=0;$i<count($arr);$i++){
  50. $b[$arr[$count]["okey"]] = $arr[$count];
  51. $count--;
  52. }
  53.  
  54. //重构一维数组
  55. if($flag == true){
  56. foreach($b AS $key=>$value){
  57. if($isvalues){
  58. $c[] = $value["value"];
  59. }else{
  60. $c[$value["okey"]] = $value["value"];
  61. }
  62. }
  63. }
  64. //多维数组去除临时key值
  65. else
  66. {
  67. foreach($b AS $key=>$value) {
  68. unset($value["okey"]);
  69. if($isvalues){
  70. $c[] = $value;
  71. }else{
  72. $c[$key] = $value;
  73. }
  74. }
  75. }
  76. return $c;
  77. }
  78. }
  79.  
  80. var_dump(array_rsort($test1));
  81. var_dump(array_rsort($test1,true));
  82. echo "----------------------------------------";
  83. var_dump(array_rsort($test2));
  84. var_dump(array_rsort($test2,true));
  85. echo "----------------------------------------";
  86. var_dump(array_rsort($test3));
  87. var_dump(array_rsort($test3,true));
  88. ?>

  

php数组倒叙支持多维数组的更多相关文章

  1. Android 在资源文件(res/strings.xml)定义一维数组,间接定义二维数组

    经常我们会在资源文件(res/strings.xml)定义字符串,一维数组,那定义二维数组?直接定义二维数组没找到,可以间接定义. 其实很简单,看过用过一次就可以记住了,一维数组估计大家经常用到,但是 ...

  2. C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com

    原文:C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | I ...

  3. php 将一个或多个二维数组组合成一个二维数组并根据某个字段排序排序

    最近再写项目的时候,碰到一个问题:如何将一个或多个二维数组组合成一个二维数组并根据某个字段排序排序:实在是想不到哪个php库中有哪个函数能实现,只能自己写一个了,将代码写出来后,发现自己的代码繁琐,并 ...

  4. 06-01 Java 二维数组格式、二维数组内存图解、二维数组操作

    二维数组格式1 /* 二维数组:就是元素为一维数组的一个数组. 格式1: 数据类型[][] 数组名 = new 数据类型[m][n]; m:表示这个二维数组有多少个一维数组. n:表示每一个一维数组的 ...

  5. C 二维数组,以及自定义二维数组

    C 二维数组,以及自定义二维数组 我们通常情况下是这样定义一个二维数组的: int a[10][15]; 我们分别查看一下a,a[0],*a 都是一样的值吧 我们可以这么理解: a是一个数组的数组 a ...

  6. Java 数组(三)二维数组

    如果一维数组的各个元素仍然是一个数组,那么它就是一个二维数组.二维数组常用于表示表,表中的信息以行和列的形式组织,第一个下标代表元素所在的行,第二个下标代表所在的列. 一.二维数组的创建 1.先声明, ...

  7. C# 之 数组倒叙排列

    //倒叙排列 string temp=""; ; i < strlist.Length / ; i++) { temp = strlist[i]; strlist[i] = ...

  8. [原创]Scala学习:数组的基本操作,数组进阶操作,多维数组

    1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组 ...

  9. JAVA中如何创建一个二维数组,然后给二维数组赋值!

    普通的赋值是:int[][] i = {{1,2,3},{2,3,4},{1,3,4}}; 如果是其他情况可以这样:比如: import java.util.* public class TT(){ ...

随机推荐

  1. RHCE7-学习里程 root 密码重置换

    一.root 密码重置换 当忘记root 密码后,可以按照以下方法重置 root 密码 1.重启动电脑,出现如下界面,按  上  下 键盘, 选择   (core)--再按e 2.在下图linux16 ...

  2. 我的Linux之路——xshell连接linux虚拟机

    出自:https://www.linuxidc.com/Linux/2016-08/134087.htm xshell 5登录本地虚拟机的具体操作步骤如下: 1.首先打开虚拟机,登录到操作系统; 2. ...

  3. nginx的location和rewrite

    1 Nginx rewrite基本语法 Nginx的rewrite语法其实很简单.用到的指令无非是这几个 set if return break rewrite 麻雀虽小,可御可萝五脏俱全.只是简单的 ...

  4. C# 对象封装为json格式

    1 对象 public class Person { public string Name { get; set; } public int Age { get; set; } public Date ...

  5. Request.IsAuthenticated

    Original question that the answer below refers to: I have a forms based application that is giving m ...

  6. Nginx通过CORS实现跨域

    Nginx通过CORS实现跨域 2016-09-01 10:33 阅读 9.4k 评论 0 社区广播:运维派(Yunweipai.com)是国内最早成立的IT运维社区,欢迎大家投稿,让运维人不再孤寂的 ...

  7. tyvj P3737 逐个击破

    http://tyvj.cn/p/3737 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 秉承伟大军事家的战略思想,作为一个有智慧的军长你,遇到了一个类似的 ...

  8. code1169 传纸条

    来自:http://www.cnblogs.com/DSChan/p/4862019.html 题目说找来回两条不相交路径,其实也可以等价为从(1,1)到(n,m)的两条不相交路径. 如果是只找一条, ...

  9. jquery Ajax跨域请求

    这是jquery api文档对跨域请求的解析:如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用JSONP类型.使用这种类型的话,会创建一个查询字符串参数 callbac ...

  10. redis集群部署及常用的操作命令(下)

    搭建好集群之后,为了扩容需要再加入一个节点.那就再复制一个7006,改为相应的redis.conf(复制了改个port就好,如果复制的redis之前属于集群,需要把关联的node.conf之类的去掉) ...