php 二维数组 随机排序_php二维数组排序方法(array_multisort usort)
例如像下面的数组:
$users = array(
array('name' => 'tom', 'age' => 20),
array('name' => 'anny', 'age' => 18),
array('name' => 'jack', 'age' => 22),
);
希望能按照age从小到大进行排序。笔者整理了两个方法出来,分享给大家。
1、使用array_multisort
使用这个方法,会比较麻烦些,要将age提取出来存储到一维数组里,然后按照age升序排列。具体代码如下:
$ages = array();
foreach ($users as $user) {
$ages[] = $user['age'];
}
array_multisort($ages, SORT_ASC, $users);
执行后,$users就是排序好的数组了,可以打印出来看看。如果需要先按年龄升序排列,再按照名称升序排列,方法同上,就是多提取一个名称数组出来,最后的排序方法这样调用:
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
2、使用usort
使用这个方法最大的好处就是可以自定义一些比较复杂的排序方法。例如按照名称的长度降序排列:
usort($users, function($a, $b) {
$al = strlen($a['name']);
$bl = strlen($b['name']);
if ($al == $bl)
return 0;
return ($al > $bl) ? -1 : 1;
});
这里使用了匿名函数,如果有需要也可以单独提取出来。其中$a, $b可以理解为$users数组下的元素,可以直接索引name值,并计算长度,而后比较长度就可以了。
笔者更喜欢第二种方法,因为少了提取排序内容到一维数组的步骤,而且排序方法更为灵活。
注:
return ($al > $bl) ? -1 : 1;
这里这个返回值是用来判断是否排序成功的
若返回值为负,则表示 A 在排序后的序列中出现在 B 之前。
若返回值为 0,则表示 A 和 B 具有相同的排序顺序。
若返回值为正,则表示 A 在排序后的序列中出现在 B 之后。
php 二维数组 随机排序_php二维数组排序方法(array_multisort usort)相关推荐
- php 二维数组 随机排序_php二维数组排序—默认自然排序
什么是二维数组?二维数组本质上是以数组作为数组元素的数组,即"数组的数组",类型说明符 数组名[常量表达式][常量表达式].二维数组又称为矩阵,行列数相等的矩阵称变方阵.对称矩阵a ...
- php 二维数组 随机排序_PHP二维数组排序简单实现方法
本文实例讲述了PHP二维数组排序简单实现方法.分享给大家供大家参考,具体如下: function multi_compare($a, $b) { $val_arr = array( 'gold'=&g ...
- php二维数组排序方法(array_multisort usort)
一维数组排序可以使用asort.ksort等一些方法进程排序,相对来说比较简单.二维数组的排序怎么实现呢?使用array_multisort和usort可以实现 例如像下面的数组: $users = ...
- java二维数组随机赋值_java 二维数组随机赋值
java 二维数组随机赋值 [2021-01-31 00:08:55] 简介: 目的:使用二维数组打印一个 10 行杨辉三角.(视频教程推荐:java课程)思路:1. 第一行有 1 个元素, 第 n ...
- php 数组随机排序_php怎么实现数组随机排序
php数组随机排序,我们可以使用PHP shuffle()函数来实现. PHP shuffle()函数表示随机调整数组中元素或值的顺序.该shuffle()函数FALSE失败时返回. 下面我们就结合具 ...
- python二维数组去重复_php二维数组去重,array_unique出除重复数据
根据网站提供的方法修改所来保持数据键名不变.//二维数组去掉重复值 并保留键值 function array_unique_fb($array2D) { $key = array(); foreach ...
- php 数组随机排序_php 数组元素随机排序代码
php教程 数组元素随机排序代码 因为工作需要我要对我定义好的数组进行随机排序,每一次循环都要是不同的,下面我们利用了php shuffle函数随机对数组元素进行排序.方法非常简单. shuffle( ...
- java二维数组遍历排序,实现二维数组的按次序排序!!!
package com.huaxia.java2se; import java.util.Arrays; public class Array { static int c=0; static int ...
- php 二维数组字母排序,PHP二维数组获取第一个中文首字母并排序 筋斗云网络
array(29) { [0]=> array(4) { ["areaid"]=> string(1) "0" ["areaname&qu ...
最新文章
- 【K8S实践】关于Kubernetes Dashboard的实践学习
- 设计模式学习笔记(一)之工厂模式、单例模式
- 5、ShardingSphere 之 公共表
- 如何安装Windows10+CentOS7双系统_自用成功版——注意看评论的注意事项
- linux自动挂起什么意思,Linux中进行挂起(待机)的命令说明
- RabbitMQ 四种Exchange
- linux下删除文件名乱码文件
- P4201-[NOI2008]设计路线【结论,树形dp】
- MyEclipse6.0 安装axis2插件, 调用加密的SAP webservice
- Apache RocketMQ在我司的最佳实践--智慧政务场景下的分布式消息与分布式事务
- IIS支持下载.config后缀名的文件
- 重新启动postgre报错时,解决方案 ( 由备份文件占用空间太大造成 ) (linux 命令 df -h 查看磁盘空间)
- echarts词云图实现_系统讲解如何用Python制作自己专属的词云图(示例)
- 软考历程(4)——安全问题之病毒
- vmoptions默认配置_idea VM options参数优化
- 英文网页翻译中文失败、QQ文件打不开、QQ系统消息打不开等
- 跑通CHPDet模型
- apr dbd mysql.so_mod_dbd
- 2-管理Audio焦点(Managing Audio Playback)
- 【DeprecationWarning: BICUBIC is deprecated and will be removed in Pillow 10 (2023-07-01).的解决方案】
热门文章
- PhotoShop 选区概念及操作
- 雪鹰领主手游如何用电脑玩 雪鹰领主手游PC电脑版教程
- 离线安装JumpServer堡垒机操作记录
- 如何在PKPM中统计结构的钢筋含量?
- 2023第三届中国数字化人才国际峰会
- iDigital2019数字营销广告主峰会
- Mybatis四大核心对象及四大内置对象
- 蒂森MC2服务器显示FC00,蒂森电梯MC2常用功能地址参数设置说明.pdf
- 校园网无法登录IEEE(ieeexplore.ieee.org)问题的解决方法(简单易操作,不用改host文件)
- 博客(Blog)的商业价值实现模式探讨