php 给多维数组中某个元素值排序array_multisort,php 二维数组排序、利用array_multisort()函数,根据某个字段对二维数组进行排序…

  • Post author:
  • Post category:php


php利用array_multisort()函数,根据某个字段对二维数组进行排序

当我们需要对数据进行排序,但又不好修改mysql查询条件的时候。我们可以利用array_multisort()来对多维数据进行排序!

首先我们先看看官方上的说明:

语法:array_multisort(array1,sorting order, sorting type,array2,array3..)

是对多个数组或多维数组进行排序的函数。

array1必需。规定输入的数组。

sorting order可选。规定排列顺序。可能的值:

SORT_ASC – 默认。按升序排列 (A-Z)。

SORT_DESC – 按降序排列 (Z-A)。

sorting type可选。规定排序类型。可能的值:

SORT_REGULAR – 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。

SORT_NUMERIC – 把每一项作为数字来处理。

SORT_STRING – 把每一项作为字符串来处理。

SORT_LOCALE_STRING – 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。

SORT_NATURAL – 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。

SORT_FLAG_CASE – 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。

array2可选。规定输入的数组。

array3可选。规定输入的数组。

参数中的数组被当成一个表的列并以行来进行排序 – 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。

第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:

SORT_ASC  – 默认,按升序排列。(A-Z)

SORT_DESC  – 按降序排列。(Z-A)

随后可以指定排序的类型:

SORT_REGULAR  – 默认。将每一项按常规顺序排列。

SORT_NUMERIC  – 将每一项按数字顺序排列。

SORT_STRING  – 将每一项按字母顺序排列

【案例】:

我们从数据库中查询出数据,时间是日期格式存储的。怎么利用array_multisort()函数来进行排序!<?php

// +——————————————————————————————

// | 利用array_multisort,根据字段对二维数组进行排序   Author:xiaochuan     28126649@qq.com

// +——————————————————————————————

header(“Content-Type:text/html;charset=utf-8”);

# 比如下面这个数组是我们从数据库中查询出来的

$data =  array(

array(‘id’ => 1  ,  ‘name’ => ‘用户1’  ,  ‘date’ => ‘2016-10-16 10:00:00’),

array(‘id’ => 2  ,  ‘name’ => ‘用户2’  ,  ‘date’ => ‘2016-10-11 10:00:00’),

array(‘id’ => 3  ,  ‘name’ => ‘用户3’  ,  ‘date’ => ‘2016-10-05 10:00:00’),

array(‘id’ => 4  ,  ‘name’ => ‘用户4’  ,  ‘date’ => ‘2016-10-05 10:00:00’),

array(‘id’ => 5  ,  ‘name’ => ‘用户5’  ,  ‘date’ => ‘2016-10-23 10:00:00’)

);

# 我们转成时间戳。方便后面比较(如果查出已经是那就不用转换了)

foreach ($data as $k=>$v){

$data[$k][‘time’] = strtotime($v[‘date’]);

}

# 把需要根据排序字段的值,放入一个数组中

foreach ($data as $k=>$v){

$id[$k]   = $v[‘id’];

$time[$k] = $v[‘time’];

}

# 按时间降序排序(time字段)

//array_multisort($time,SORT_NUMERIC,SORT_DESC,$data);

# 按时间降序排序(time字段) 再按ID降序排序

array_multisort($time,SORT_NUMERIC,SORT_DESC,$id,SORT_NUMERIC,SORT_DESC,$data);

echo ‘

';

print_r($data);

echo ‘

‘;

?>

运行打印出如下数据:Array

(

[0] => Array

(

[id] => 5

[name] => 用户5

[date] => 2016-10-23 10:00:00

[time] => 1477188000

)

[1] => Array

(

[id] => 1

[name] => 用户1

[date] => 2016-10-16 10:00:00

[time] => 1476583200

)

[2] => Array

(

[id] => 2

[name] => 用户2

[date] => 2016-10-11 10:00:00

[time] => 1476151200

)

[3] => Array

(

[id] => 4

[name] => 用户4

[date] => 2016-10-05 10:00:00

[time] => 1475632800

)

[4] => Array

(

[id] => 3

[name] => 用户3

[date] => 2016-10-05 10:00:00

[time] => 1475632800

)

)

浏览器启用弹出窗口过滤功能,将无法跳转到下载页。在浏览器地址栏右边符号提示处点击允许就可以了!

郑重声明:

1、本站源码仅供个人学习研究和交流使用,请于下载后二十四小时内删除

2、本站大多资源来源于互联网、用户分享,仅供学习交流使用,本站不提供任何技术支持

3、本站联系方式Email:admin@youhutong.com ,收到邮件会第一时间处理。

4、如侵犯到任何版权问题,请立即告知本站(立即在线告知),本站将及时删除并致以最深的歉意