php两个数组递归排序,PHP数组递归排序实现方法示例
本文实例讲述了PHP数组递归排序实现方法。分享给大家供大家参考,具体如下:
/**
* 递归根据特定key对数组排序
* @param $data
* @param string $orderKey
* @param string $sonKey
* @param int $orderBy
* @return mixed
*/
function recursion_orderby($data, $orderKey = 'order', $sonKey = 'children', $orderBy = SORT_ASC)
{
$func = function ($value) use ($sonKey, $orderKey, $orderBy) {
if (isset($value[$sonKey]) && is_array($value[$sonKey])) {
$value[$sonKey] = recursion_orderby($value[$sonKey], $orderKey, $sonKey, $orderBy);
}
return $value;
};
return array_orderby(array_map($func, $data), $orderKey, $orderBy);
}
$a = [
[
'order' => 0,
],
[
'order' => -1,
'children' => [
[
'order' => 0,
],
[
'order' => -2,
'children' => [
['order' => 0],
['order' => -1],
['order' => 1],
],
],
],
],
[
'order' => 2,
],
];
var_dump(recursion_orderby($a));
/**
*输出:
array(3) {
[0] =>
array(2) {
'order' =>
int(-1)
'children' =>
array(2) {
[0] =>
array(2) {
'order' =>
int(-2)
'children' =>
array(3) {
[0] =>
array(1) {
'order' =>
int(-1)
}
[1] =>
array(1) {
'order' =>
int(0)
}
[2] =>
array(1) {
'order' =>
int(1)
}
}
}
[1] =>
array(1) {
'order' =>
int(0)
}
}
}
[1] =>
array(1) {
'order' =>
int(0)
}
[2] =>
array(1) {
'order' =>
int(2)
}
}
*/
注:这里的array_orderby方法在前面一篇《php自定义二维数组排序函数array_orderby用法》中有详细介绍
PS:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:http://tools.jb51.net/aideddesign/paixu_ys
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《php程序设计算法总结》、《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结》
希望本文所述对大家PHP程序设计有所帮助。
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:php中文网
php两个数组递归排序,PHP数组递归排序实现方法示例相关推荐
- python中交集并集用什么符号表示_Python实现两个list求交集,并集,差集的方法示例...
本文实例讲述了Python实现两个list求交集,并集,差集的方法.分享给大家供大家参考,具体如下: 在python中,数组可以用list来表示.如果有两个数组,分别要求交集,并集与差集,怎么实现比较 ...
- python类中的属性分为类属性和实例属性两种_python中类和实例如何绑定属性与方法示例详解...
前言 python类与实例的方法的调用中觉得云里雾里,思考之后将自己的想法记录下,一来加深自己理解,巩固自己记忆,而来帮助一些想要学习python的朋友理解这门抽象的语言,由于Python是动态语言, ...
- 面试题整理 4 合并两个排序的数组
对于链表,<剑指offer>中感觉有些地方不妥,前面讲过链表的头指针是指向一个指针的指针,即指向头结点的指针的指针.但是后面在链表的使用中输入的头指针只是指向链表的头结点的指针. 后面看& ...
- 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)
常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...
- [leetcode] 4 寻找两个有序数组的中位数(二分+递归查找第K小数)(重要)
问题描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 n ...
- java将两个数组合并为一个数组并排序,人生转折!
前言 阿里巴巴,作为国内互联网公司的Top,算是业界的标杆,有阿里背景的程序员,也更具有权威性.作为程序员,都清楚阿里对于员工要求有多高,技术人员掌握的技术水平更是望尘莫及.所以,大厂程序员的很多经验 ...
- 链表节点合并排序:数组和单链表
每日一贴,今天的内容关键字为链表节点 1 数组合并排序 1.1 合并两个已排序好的数组 需要额定的存储空间用来存储合并结果 //merge two array which are already so ...
- js map 排序_数组方法写给女友的一系列 JS 数组操作(建议收藏 | 内附思维导图)...
前言 最近和女友,咳咳...(说出来可能会被打s)学习JS数组方法,用几个字形容的话就是听说过,实际使用.遇到的时候就分不清具体方法会得到怎样的结果. 今天我将通过这篇文章好好整理一下关于JS数组的方 ...
- 二进制搜索树_将排序的数组转换为二进制搜索树
二进制搜索树 Problem statement: 问题陈述: Given an array where elements are sorted in ascending order, convert ...
- 算法--排序--寻找数组内第K大的元素
此题目,需要用到快速排序里的划分数组操作: 快排参考:https://blog.csdn.net/qq_21201267/article/details/81516569#t2 先选取一个合适的哨兵( ...
最新文章
- 关于MySQLdb连接数据的使用(插入数据,删除数据,更新数据,搜索数据——前端页面完成这些对数据库的操作)
- 在 Spring Boot 中,如何干掉 if else
- Illegal access:this web application instance has been stopped already
- C 20 协程初探
- 【LeetCode】3月22日打卡-Day7
- sublime-cssrem-安装与使用
- c++中recvfrom函数_通俗易懂:快速理解网络编程中5种IO模型
- Python基础学习第一周
- 如何在基于 Intel 的 Mac 上使用机构恢复密钥?
- kotlin之高阶函数
- vs 2013远程调试
- 【进阶版】 机器学习之强化学习、蒙特卡罗、AlphaGo原理浅析(22)
- 联想平板刷android,联想平板电脑刷机全教程【图文】
- 嵌入式系统测试教学实训平台系统情况
- NGINX源码之:ngx_hash
- 001潜入大数据Hadoop框架的世界
- get请求获取淘宝吱口令
- 测绘资质-导航电子地图制作
- 两组字符串去重/两个列表去重
- DHT11温湿度LCD显示