网站建设资讯

NEWS

网站建设资讯

php二维数据排序,php二维数据排序方法

thinkPHP二维数组排序

从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条。

创新互联从2013年成立,是专业互联网技术服务公司,拥有项目成都做网站、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元滑县做网站,已为上家服务,为滑县各地企业和个人服务,联系电话:028-86922220

遇到这个要求的时候就不是 ORDER BY 能解决的问题了。因此翻看 PHP 手册查找到了如下方法,做此笔记。

废话少说,奉上代码,清单如下:

[php] view plain copy

?php

/**

* 二维数组根据某个字段排序

* 功能:按照用户的年龄倒序排序

* @author ruxing.li

*/

header('Content-Type:text/html;Charset=utf-8');

$arrUsers = array(

array(

'id' = 1,

'name' = '张三',

'age' = 25,

),

array(

'id' = 2,

'name' = '李四',

'age' = 23,

),

array(

'id' = 3,

'name' = '王五',

'age' = 40,

),

array(

'id' = 4,

'name' = '赵六',

'age' = 31,

),

array(

'id' = 5,

'name' = '黄七',

'age' = 20,

),

);

$sort = array(

'direction' = 'SORT_DESC', //排序顺序标志 SORT_DESC 降序;SORT_ASC 升序

'field' = 'age', //排序字段

);

$arrSort = array();

foreach($arrUsers AS $uniqid = $row){

foreach($row AS $key=$value){

$arrSort[$key][$uniqid] = $value;

}

}

if($sort['direction']){

array_multisort($arrSort[$sort['field']], constant($sort['direction']), $arrUsers);

}

var_dump($arrUsers);

/*

输出结果:

array (size=5)

0 =

array (size=3)

'id' = int 5

'name' = string '黄七' (length=6)

'age' = int 20

1 =

array (size=3)

'id' = int 2

'name' = string '李四' (length=6)

'age' = int 23

2 =

array (size=3)

'id' = int 1

'name' = string '张三' (length=6)

'age' = int 25

3 =

array (size=3)

'id' = int 4

'name' = string '赵六' (length=6)

'age' = int 31

4 =

array (size=3)

'id' = int 3

'name' = string '王五' (length=6)

'age' = int 40

*/

如何对PHP二维数组根据第二维某键值去重和排序

1 需要排序的数组如下:

$array = array(

array('name'='手机','brand'='诺基亚','price'=1050),

array('name'='笔记本电脑','brand'='lenovo','price'=4300),

array('name'='剃须刀','brand'='飞利浦','price'=3100),

array('name'='跑步机','brand'='三和松石','price'=4900),

array('name'='手表','brand'='卡西欧','price'=960),

array('name'='液晶电视','brand'='索尼','price'=6299),

array('name'='激光打印机','brand'='惠普','price'=1200)

);

2 排序的函数:

function arr_sort($array,$key,$order="asc"){//asc是升序 desc是降序

$arr_nums=$arr=array();

foreach($array as $k=$v){

$arr_nums[$k]=$v[$key];

}

if($order=='asc'){

asort($arr_nums);

}else{

arsort($arr_nums);

}

foreach($arr_nums as $k=$v){

$arr[$k]=$array[$k];

}

return $arr;

}

3 调用方式:

arr_sort($array,'price');

PHP里switch里面怎样增加默认的二维数组排序,就是直接输出二维数组里面定义的顺序

您好,这样:

?php

$data = array();

$data[] = array('volume' = 67, 'edition' = 2);

$data[] = array('volume' = 86, 'edition' = 1);

$data[] = array('volume' = 85, 'edition' = 6);

$data[] = array('volume' = 98, 'edition' = 2);

$data[] = array('volume' = 86, 'edition' = 6);

$data[] = array('volume' = 67, 'edition' = 7);

// 取得列的列表

foreach ($data as $key = $row)

{

$volume[$key] = $row['volume'];

$edition[$key] = $row['edition'];

}

$ret = arraySort($data, 'volume', 'desc');

print_r($ret);

/**

* @desc arraySort php二维数组排序 按照指定的key 对数组进行排序

* @param array $arr 将要排序的数组

* @param string $keys 指定排序的key

* @param string $type 排序类型 asc | desc

* @return array

*/

function arraySort($arr, $keys, $type = 'asc') {

$keysvalue = $new_array = array();

foreach ($arr as $k = $v){

$keysvalue[$k] = $v[$keys];

}

$type == 'asc' ? asort($keysvalue) : arsort($keysvalue);

reset($keysvalue);

foreach ($keysvalue as $k = $v) {

$new_array[$k] = $arr[$k];

}

return $new_array;

}

?

这个自定义函数与系统函数的一个区别就是:自定义函数只支持针对某一个key的排序,如果要支持多个key的排序需要执行多次; 而系统函数array_multisort可以一次性对多个key且可以指定多个排序规则,系统函数还是相当强大的,推荐使用系统函数,毕竟是C底层实现的,这里只是举例说明如果通过自定义函数来对数组进行排序,当然这个自定义函数也可以继续扩展来支持更多的排序规则。在取排名、排行榜、成绩等场景中用到的还是非常多的。

php二维数组中按某个元素的值排序

//提供一个方法

class lib_BaseUtils{

static $s_field;

static $s_sc;

/**

 * php 二维数组按键值排序

 * @param array $a 需要排序的数组

 * @param string $sort 排序的键值

 * @param string $d 默认ASC,带上参后为DESC

 * @return boolean

 */

static function array_sort($a, $sort, $d='') {

self::$s_field = $sort;

self::$s_sc = $d;

usort($a, array("lib_BaseUtils","array_sort_callback"));

return $a;

}

//排序回调方法 请勿删除

static function array_sort_callback($a, $b) {

$s_a = self::$s_sc ? $b : $a;

$s_b = self::$s_sc ? $a : $b;

$field = self::$s_field;

switch (true){

case (is_string($s_a[$field])  is_string($s_b[$field])):

return strcmp($s_a[$field], $s_b[$field]);

break;

default:

if($s_a[$field]== $s_b[$field]){

return 0;

}else{

return $s_a[$field]$s_b[$field]?-1:1;

}

}

}

调用方法

lib_BaseUtils::array_sort($lists, 'app_down','desc');

php 二维数组排序问题 某字段按照自定义规则排序

复杂的数组排序可以用自定义的排序规则

?php

$arr = array(

0 = array('id' = '2014347856', 'name' = '张甜', '科目' = '语文', 'tag' = '期中考试', '成绩' = '142'),

1 = array('id' = '2014347856', 'name' = '张甜', '科目' = '数学', 'tag' = '期中考试', '成绩' = '98'),

2 = array('id' = '2014347856', 'name' = '张甜', '科目' = '英语', 'tag' = '期中考试', '成绩' = '118'),

3 = array('id' = '2014347856', 'name' = '张甜', '科目' = '化学', 'tag' = '期中考试', '成绩' = '78'),

4 = array('id' = '2014347856', 'name' = '张甜', '科目' = '物理', 'tag' = '期中考试', '成绩' = '132'),

5 = array('id' = '2014347856', 'name' = '张甜', '科目' = '生物', 'tag' = '期中考试', '成绩' = '115'),

6 = array('id' = '2014347856', 'name' = '张甜', '科目' = '地理', 'tag' = '期中考试', '成绩' = '99'),

7 = array('id' = '2014347856', 'name' = '张甜', '科目' = '历史', 'tag' = '期中考试', '成绩' = '88'),

8 = array('id' = '2014347856', 'name' = '张甜', '科目' = '政治', 'tag' = '期中考试', '成绩' = '125'),

9 = array('id' = '2014347880', 'name' = '李鸣', '科目' = '语文', 'tag' = '期中考试', '成绩' = '79'),

10 = array('id' = '2014347880', 'name' = '李鸣', '科目' = '数学', 'tag' = '期中考试', '成绩' = '148'),

11 = array('id' = '2014347880', 'name' = '李鸣', '科目' = '英语', 'tag' = '期中考试', '成绩' = '142'),

);

/*自定义排序*/

function userSort($a, $b)

{

if ($a['name'] == $b['name']) {

/*排序科目*/

$subjectSort = array('语文', '数学', '英语', '历史', '政治', '地理', '物理', '化学', '生物');

foreach ($subjectSort as $index = $item) {

if ($a['科目'] == $item) {

$tmp1 = $index;

}

if ($b['科目'] == $item) {

$tmp2 = $index;

}

}

return $tmp1  $tmp2 ? -1 : 1;

} else {

/*排序name*/

$tmpArr = [$a['name'], $b['name']];

sort($tmpArr);

return $a['name'] == $tmpArr[0] ? -1 : 1;

}

}

usort($arr, 'userSort');

var_dump($arr);

PHP中怎么根据二维数组中的子数组的某个元素进行排序

//先用array_column 多维数组按照纵向(列)取出

$date = array_column($arr, '0');

//上面得到的结果:array()

//再用array_multisort 结合array_column得到的结果对$arr进行排序

array_multisort($date,SORT_ASC,$arr);


标题名称:php二维数据排序,php二维数据排序方法
分享链接:http://njwzjz.com/article/dsedije.html