php数组排序二维数组排序(下面哪些是PHP数组排序的方法)

本文目录一览:

php 根据某个字段对二维数组这个数组排序

试编写代码如下:

?php

$array[] = array(‘id’=1,’price’=50);

$array[] = array(‘id’=2,’price’=70);

$array[] = array(‘id’=3,’price’=30);

$array[] = array(‘id’=4,’price’=20);

foreach ($array as $key=$value){

$id[$key] = $value[‘id’];

$price[$key] = $value[‘price’];

}

array_multisort($price,SORT_NUMERIC,SORT_DESC,$id,SORT_STRING,SORT_ASC,$array);

echo ‘pre’;

print_r($array);

echo ‘/pre’;

?

运行结果:

Array

(

[0] = Array

(

[id] = 2

[price] = 70

)

[1] = Array

(

[id] = 1

[price] = 50

)

[2] = Array

(

[id] = 3

[price] = 30

)

[3] = Array

(

[id] = 4

[price] = 20

)

)

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

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

$date = array_column($arr, ‘0’);

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

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

array_multisort($date,SORT_ASC,$arr);

如何对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数组排序array_multisort函数详细用法跟排序方法是怎样的?

一、先看最简单的情况。有两个数组:

$arr1 = array(1,9,5);

$arr2 = array(6,2,4);

array_multisort($arr1,$arr2);

print_r($arr1); // 得到的顺序是1,5,9

print_r($arr2); // 得到的顺序是6,4,2

我估计两个数组的值自始至终都是对应着的:1对应6,9对应2,5对应4。

我们再加多一个数组看看会怎样:

$arr1 = array(1,9,5);

$arr2 = array(6,2,4);

$arr3 = array(3,7,8);

array_multisort($arr1,$arr2,$arr3);

查看结果,1自始至终都对应6对应3,其它项也是如此。这种对应关系就是手册中所谓的“排序时保留原有的键名关联”。

另外也可以把每个数组想像成数据库表的一列。而对应着的1,6,3为一数据行,9,2,7为另一数据行。。。

array_multisort会先按第一个数组(想像成列)排序,如果第一个数组(列)的值相同,则按第二个数组(列)排序。

具体可以用下面的程式来测试:

$arr1 = array(1,9,5,9);

$arr2 = array(6,2,4,1);

$arr3 = array(3,7,8,0);

array_multisort($arr1,$arr2,$arr3);

可以想像这里$arr3的结果是(3,8,0,7)。

二、接下来讲解array_multisort的参数。这个函数的参数很灵活。最简单的情况是如上面所示的以1个或n个数组作为参数,需要注意的是每个数组的项数要一样,否则会warning导致排序失效。

像这样array_multisort($arr1,$arr2,$arr3); 默认是所有数组都是升序排列,如果想对$arr2降序,并当作字符串去比较,就要写成:

array_multisort($arr1, $arr2, SORT_DESC, SORT_STRING, $arr3);

每个array后面可以跟一个排序顺序标志或一个排序类型标志,或者两种标志同时出现。但是每种排序标志在每个数组后面只能出现一个。

详细如下:

排序顺序标志:

SORT_ASC – 按照上升顺序排序(默认)

SORT_DESC – 按照下降顺序排序

排序类型标志:

SORT_REGULAR – 将项目按照通常方法比较(默认)

SORT_NUMERIC – 将项目按照数值比较

SORT_STRING – 将项目按照字符串比较

三、最后是array_multisort有什么实际作用。

我们通常有一些多维数组需要排序:

$guys = Array

(

[0] = Array

(

[name] = jake

[score] = 80

[grade] = A

)

[1] = Array

(

[name] = jin

[score] = 70

[grade] = A

)

[2] = Array

(

[name] = john

[score] = 80

[grade] = A

)

[3] = Array

(

[name] = ben

[score] = 20

[grade] = B

)

)

例如我们想按成绩倒序排列,如果成绩相同就按名字的升序排列。

这时我们就需要根据$guys的顺序多弄两个数组出来:

$scores = array(80,70,80,20);

$names = array(‘jake’,’jin’,’john’,’ben’);

然后

array_multisort($scores, SORT_DESC, $names, $guys);就行了

还能不能更灵活一点呢,每次想排序都要另外弄些数组出来吗?

其实在qeephp的helper_array类里面已经封装得很好,下面是它的两个方法,需要的人自己修改一下就可以用了:

/**

* 根据指定的键对数组排序

*

* 用法:

* @code php

* $rows = array(

* array(‘id’ = 1, ‘value’ = ‘1-1’, ‘parent’ = 1),

* array(‘id’ = 2, ‘value’ = ‘2-1’, ‘parent’ = 1),

* array(‘id’ = 3, ‘value’ = ‘3-1’, ‘parent’ = 1),

* array(‘id’ = 4, ‘value’ = ‘4-1’, ‘parent’ = 2),

* array(‘id’ = 5, ‘value’ = ‘5-1’, ‘parent’ = 2),

* array(‘id’ = 6, ‘value’ = ‘6-1’, ‘parent’ = 3),

* );

*

* $rows = Helper_Array::sortByCol($rows, ‘id’, SORT_DESC);

* dump($rows);

* // 输出结果为:

* // array(

* // array(‘id’ = 6, ‘value’ = ‘6-1’, ‘parent’ = 3),

* // array(‘id’ = 5, ‘value’ = ‘5-1’, ‘parent’ = 2),

* // array(‘id’ = 4, ‘value’ = ‘4-1’, ‘parent’ = 2),

* // array(‘id’ = 3, ‘value’ = ‘3-1’, ‘parent’ = 1),

* // array(‘id’ = 2, ‘value’ = ‘2-1’, ‘parent’ = 1),

* // array(‘id’ = 1, ‘value’ = ‘1-1’, ‘parent’ = 1),

* // )

* @endcode

*

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

* @param string $keyname 排序的键

* @param int $dir 排序方向

*

* @return array 排序后的数组

*/

static function sortByCol($array, $keyname, $dir = SORT_ASC)

{

return self::sortByMultiCols($array, array($keyname = $dir));

}

/**

* 将一个二维数组按照多个列进行排序,类似 SQL 语句中的 ORDER BY

*

* 用法:

* @code php

* $rows = Helper_Array::sortByMultiCols($rows, array(

* ‘parent’ = SORT_ASC,

* ‘name’ = SORT_DESC,

* ));

* @endcode

*

* @param array $rowset 要排序的数组

* @param array $args 排序的键

*

* @return array 排序后的数组

*/

static function sortByMultiCols($rowset, $args)

{

$sortArray = array();

$sortRule = ”;

foreach ($args as $sortField = $sortDir)

{

foreach ($rowset as $offset = $row)

{

$sortArray[$sortField][$offset] = $row[$sortField];

}

$sortRule .= ‘$sortArray[\” . $sortField . ‘\’], ‘ . $sortDir . ‘, ‘;

}

if (empty($sortArray) || empty($sortRule)) { return $rowset; }

eval(‘array_multisort(‘ . $sortRule . ‘$rowset);’);

return $rowset;

}

php二维数组自定义排序

function pSort($arr)

{

$TimeSort = array();

foreach ($arr as $key = $value) {

$TimeSort[$key] = $value[‘age’];

}

asort($TimeSort);

$data = array();

foreach ($TimeSort as $key = $value) {

$data[] = $arr[$key];

}

$i = 0;

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

$arr[$k] = $data[$i];

$i++;

}

return $arr;

}

主要部分,你也可以考虑用那个多为数组排序的那个函数,上面这个是我前几天自己写的,不知道在你这能用不

php二维数组排序

$ary=array(array(“ID”=21,”name”=”kitty”),array(“ID”=22,”name”=”sony”),array(“ID”=17,”name”=”picker”));

for($i=0; $icount($ary) ;$i++){

for($j=0; $j$i; $j++){

if($ary[$i][‘ID’] $ary[$j][‘ID’]){

$temp = $ary[$i][‘ID’];

$ary[$i][‘ID’] = $ary[$j][‘ID’];

$ary[$j][‘ID’] = $temp;

}

}

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/301015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-29 14:19
下一篇 2024-12-29 14:19

相关推荐

  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • ArcGIS更改标注位置为中心的方法

    本篇文章将从多个方面详细阐述如何在ArcGIS中更改标注位置为中心。让我们一步步来看。 一、禁止标注智能调整 在ArcMap中设置标注智能调整可以自动将标注位置调整到最佳显示位置。…

    编程 2025-04-29
  • 解决.net 6.0运行闪退的方法

    如果你正在使用.net 6.0开发应用程序,可能会遇到程序闪退的情况。这篇文章将从多个方面为你解决这个问题。 一、代码问题 代码问题是导致.net 6.0程序闪退的主要原因之一。首…

    编程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一个类的构造函数,在创建对象时被调用。在本篇文章中,我们将从多个方面详细讨论init方法的作用,使用方法以及注意点。 一、定义init方法 在Pyth…

    编程 2025-04-29
  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • Python导入数组

    本文将为您详细阐述Python导入数组的方法、优势、适用场景等方面,并附上代码示例。 一、numpy库的使用 numpy是Python中一个强大的数学库,其中提供了非常丰富的数学函…

    编程 2025-04-29
  • 用不同的方法求素数

    素数是指只能被1和自身整除的正整数,如2、3、5、7、11、13等。素数在密码学、计算机科学、数学、物理等领域都有着广泛的应用。本文将介绍几种常见的求素数的方法,包括暴力枚举法、埃…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • Python返回数组:一次性搞定多种数据类型

    Python是一种多用途的高级编程语言,具有高效性和易读性的特点,因此被广泛应用于数据科学、机器学习、Web开发、游戏开发等各个领域。其中,Python返回数组也是一项非常强大的功…

    编程 2025-04-29

发表回复

登录后才能评论