例如像下面的数组:

$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)相关推荐

  1. php 二维数组 随机排序_php二维数组排序—默认自然排序

    什么是二维数组?二维数组本质上是以数组作为数组元素的数组,即"数组的数组",类型说明符 数组名[常量表达式][常量表达式].二维数组又称为矩阵,行列数相等的矩阵称变方阵.对称矩阵a ...

  2. php 二维数组 随机排序_PHP二维数组排序简单实现方法

    本文实例讲述了PHP二维数组排序简单实现方法.分享给大家供大家参考,具体如下: function multi_compare($a, $b) { $val_arr = array( 'gold'=&g ...

  3. php二维数组排序方法(array_multisort usort)

    一维数组排序可以使用asort.ksort等一些方法进程排序,相对来说比较简单.二维数组的排序怎么实现呢?使用array_multisort和usort可以实现 例如像下面的数组: $users = ...

  4. java二维数组随机赋值_java 二维数组随机赋值

    java 二维数组随机赋值 [2021-01-31 00:08:55]  简介: 目的:使用二维数组打印一个 10 行杨辉三角.(视频教程推荐:java课程)思路:1. 第一行有 1 个元素, 第 n ...

  5. php 数组随机排序_php怎么实现数组随机排序

    php数组随机排序,我们可以使用PHP shuffle()函数来实现. PHP shuffle()函数表示随机调整数组中元素或值的顺序.该shuffle()函数FALSE失败时返回. 下面我们就结合具 ...

  6. python二维数组去重复_php二维数组去重,array_unique出除重复数据

    根据网站提供的方法修改所来保持数据键名不变.//二维数组去掉重复值 并保留键值 function array_unique_fb($array2D) { $key = array(); foreach ...

  7. php 数组随机排序_php 数组元素随机排序代码

    php教程 数组元素随机排序代码 因为工作需要我要对我定义好的数组进行随机排序,每一次循环都要是不同的,下面我们利用了php shuffle函数随机对数组元素进行排序.方法非常简单. shuffle( ...

  8. java二维数组遍历排序,实现二维数组的按次序排序!!!

    package com.huaxia.java2se; import java.util.Arrays; public class Array { static int c=0; static int ...

  9. php 二维数组字母排序,PHP二维数组获取第一个中文首字母并排序 筋斗云网络

    array(29) { [0]=> array(4) { ["areaid"]=> string(1) "0" ["areaname&qu ...

最新文章

  1. 【K8S实践】关于Kubernetes Dashboard的实践学习
  2. 设计模式学习笔记(一)之工厂模式、单例模式
  3. 5、ShardingSphere 之 公共表
  4. 如何安装Windows10+CentOS7双系统_自用成功版——注意看评论的注意事项
  5. linux自动挂起什么意思,Linux中进行挂起(待机)的命令说明
  6. RabbitMQ 四种Exchange
  7. linux下删除文件名乱码文件
  8. P4201-[NOI2008]设计路线【结论,树形dp】
  9. MyEclipse6.0 安装axis2插件, 调用加密的SAP webservice
  10. Apache RocketMQ在我司的最佳实践--智慧政务场景下的分布式消息与分布式事务
  11. IIS支持下载.config后缀名的文件
  12. 重新启动postgre报错时,解决方案 ( 由备份文件占用空间太大造成 ) (linux 命令 df -h 查看磁盘空间)
  13. echarts词云图实现_系统讲解如何用Python制作自己专属的词云图(示例)
  14. 软考历程(4)——安全问题之病毒
  15. vmoptions默认配置_idea VM options参数优化
  16. 英文网页翻译中文失败、QQ文件打不开、QQ系统消息打不开等
  17. 跑通CHPDet模型
  18. apr dbd mysql.so_mod_dbd
  19. 2-管理Audio焦点(Managing Audio Playback)
  20. 【DeprecationWarning: BICUBIC is deprecated and will be removed in Pillow 10 (2023-07-01).的解决方案】

热门文章

  1. PhotoShop 选区概念及操作
  2. 雪鹰领主手游如何用电脑玩 雪鹰领主手游PC电脑版教程
  3. 离线安装JumpServer堡垒机操作记录
  4. 如何在PKPM中统计结构的钢筋含量?
  5. 2023第三届中国数字化人才国际峰会
  6. iDigital2019数字营销广告主峰会
  7. Mybatis四大核心对象及四大内置对象
  8. 蒂森MC2服务器显示FC00,蒂森电梯MC2常用功能地址参数设置说明.pdf
  9. 校园网无法登录IEEE(ieeexplore.ieee.org)问题的解决方法(简单易操作,不用改host文件)
  10. 博客(Blog)的商业价值实现模式探讨