好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php元素排序算法 php元素排序算法怎么用

很多站长朋友们都不太清楚php元素排序算法,今天小编就来给大家整理php元素排序算法,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 PHP中的快速排序算法如何实现倒序? 2、 PHP实现常见的排序算法 3、 php快速排序算法 4、 php几种排序算法实例详解 5、 如何使用强大的PHP函数对数组进行排序 PHP中的快速排序算法如何实现倒序?

您好,这样的:

1. 冒泡排序法

* 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来。

* 比如:2,4,1 // 第一次 冒出的泡是4

* 2,1,4 // 第二次 冒出的泡是 2

* 1,2,4 // 最后就变成这样

view sourceprint?

01.$arr=array(1,43,54,62,21,66,32,78,36,76,39);

02.function getpao($arr)

03.{

04.$len=count($arr);

05.//设置一个空数组 用来接收冒出来的泡

06.//该层循环控制 需要冒泡的轮数

07.for($i=1;$i<$len;$i++)

08.{ //该层循环用来控制每轮 冒出一个数 需要比较的次数

09.for($k=0;$k<$len-$i;$k++)

10.{

11.if($arr[$k]>$arr[$k+1])

12.{

13.$tmp=$arr[$k+1];

14.$arr[$k+1]=$arr[$k];

15.$arr[$k]=$tmp;

16.}

17.}

18.}

19.return $arr;

20.}

2. 选择排序法:

选择排序法思路: 每次选择一个相应的元素,然后将其放到指定的位置

view sourceprint?

01.function select_sort($arr) {

02.//实现思路 双重循环完成,外层控制轮数,当前的最小值。内层 控制的比较次数

03.//$i 当前最小值的位置, 需要参与比较的元素

04.for($i=0, $len=count($arr); $i<$len-1; $i++) {

05.//先假设最小的值的位置

06.$p = $i;

07.//$j 当前都需要和哪些元素比较,$i 后边的。

08.for($j=$i+1; $j<$len; $j++) {

09.//$arr[$p] 是 当前已知的最小值

10.if($arr[$p] > $arr[$j]) {

11.//比较,发现更小的,记录下最小值的位置;并且在下次比较时,

12.// 应该采用已知的最小值进行比较。

13.$p = $j;

14.}

15.}

16.//已经确定了当前的最小值的位置,保存到$p中。

17.//如果发现 最小值的位置与当前假设的位置$i不同,则位置互换即可

18.if($p != $i) {

19.$tmp = $arr[$p];

20.$arr[$p] = $arr[$i];

21.$arr[$i] = $tmp;

22.}

23.}

24.//返回最终结果

25.return $arr;

26.}

3.插入排序法

插入排序法思路:将要排序的元素插入到已经 假定排序号的数组的指定位置。

view sourceprint?

01.function insert_sort($arr) {

02.//区分 哪部分是已经排序好的

03.//哪部分是没有排序的

04.//找到其中一个需要排序的元素

05.//这个元素 就是从第二个元素开始,到最后一个元素都是这个需要排序的元素

06.//利用循环就可以标志出来

07.//i循环控制 每次需要插入的元素,一旦需要插入的元素控制好了,

08.//间接已经将数组分成了2部分,下标小于当前的(左边的),是排序好的序列

09.for($i=1, $len=count($arr); $i<$len; $i++) {

10.//获得当前需要比较的元素值。

11.$tmp = $arr[$i];

12.//内层循环控制 比较 并 插入

13.for($j=$i-1;$j>=0;$j--) {

14.//$arr[$i];//需要插入的元素; $arr[$j];//需要比较的元素

15.if($tmp < $arr[$j]) {

16.//发现插入的元素要小,交换位置

17.//将后边的元素与前面的元素互换

18.$arr[$j+1] = $arr[$j];

19.//将前面的数设置为 当前需要交换的数

20.$arr[$j] = $tmp;

21.} else {

22.//如果碰到不需要移动的元素

23.//由于是已经排序好是数组,则前面的就不需要再次比较了。

24.break;

25.}

26.}

27.}

28.//将这个元素 插入到已经排序好的序列内。

29.//返回

30.return $arr;

31.}

4.快速排序法

view sourceprint?

01.function quick_sort($arr) {

02.//先判断是否需要继续进行

03.$length = count($arr);

04.if($length <= 1) {

05.return $arr;

06.}

07.//如果没有返回,说明数组内的元素个数 多余1个,需要排序

08.//选择一个标尺

09.//选择第一个元素

10.$base_num = $arr[0];

11.//遍历 除了标尺外的所有元素,按照大小关系放入两个数组内

12.//初始化两个数组

13.$left_array = array();//小于标尺的

14.$right_array = array();//大于标尺的

15.for($i=1; $i<$length; $i++) {

16.if($base_num > $arr[$i]) {

17.//放入左边数组

18.$left_array[] = $arr[$i];

19.} else {

20.//放入右边

21.$right_array[] = $arr[$i];

22.}

23.}

24.//再分别对 左边 和 右边的数组进行相同的排序处理方式

25.//递归调用这个函数,并记录结果

26.$left_array = quick_sort($left_array);

27.$right_array = quick_sort($right_array);

28.//合并左边 标尺 右边

29.return array_merge($left_array, array($base_num), $right_array);

30.}

PHP实现常见的排序算法

注:为方便描述,下面的排序全为正序(从小到大排序)

假设有一个数组[a,b,c,d]

冒泡排序依次比较相邻的两个元素,如果前面的元素大于后面的元素,则两元素交换位置;否则,位置不变。具体步骤:

1,比较a,b这两个元素,如果a>b,则交换位置,数组变为:[b,a,c,d]

2,比较a,c这两个元素,如果a<c,则位置不变,数组变为:[b,a,c,d]

3,比较c,d这两个元素,如果c>d,则交换位置,数组变为:[b,a,d,c]

完成第一轮比较后,可以发现最大的数c已经排(冒)在最后面了,接着再进行第二轮比较,但第二轮比较不必比较最后一个元素了,因为最后一个元素已经是最大的了。

第二轮比较结束后,第二大的数也会冒到倒数第二的位置。

依次类推,再进行第三轮,,,

就这样最大的数一直往后排(冒),最后完成排序。所以我们称这种排序算法为冒泡排序。

选择排序是一种直观的算法,每一轮会选出列中最小的值,把最小值排到前面。具体步骤如下:

插入排序步骤大致如下:

快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。

步骤:

从数列中挑出一个元素,称为 “基准”(pivot),

重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。

递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

php快速排序算法

<?php

function quick_sort($arr) {

// 判断是否需要继续

if (count($arr) <= 1) {

return $arr;

}

$middle = $arr[0]; // 中间值

$left = array(); // 小于中间值

$right = array();// 大于中间值

// 循环比较

for ($i=1; $i < count($arr); $i++) {

if ($middle < $arr[$i]) {

// 大于中间值

$right[] = $arr[$i];

} else {

// 小于中间值

$left[] = $arr[$i];

}

}

// 递归排序两边

$left = quick_sort($left);

$right = quick_sort($right);

// 合并排序后的数据,别忘了合并中间值

return array_merge($left, array($middle), $right);

}

$arr = array(25,133,452,364,5876,293,607,365,8745,534,18,33);

echo '<pre>';

var_dump($arr);

var_dump(quick_sort($arr));

php几种排序算法实例详解

四种排序算法的PHP实现:

1)?插入排序(Insertion?Sort)的基本思想是:?

每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。

2)?选择排序(Selection?Sort)的基本思想是:?

每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。

3)?冒泡排序的基本思想是:?

两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。

4)?快速排序实质上和冒泡排序一样,都是属于交换排序的一种应用。所以基本思想和上面的冒泡排序是一样的。

1.?sort.php文件如下:

<?php

class?Sort?{

??private?$arr??=?array();?

??private?$sort??=?'insert';

??private?$marker?=?'_sort';

??private?$debug?=?TRUE;

??/**

???*?构造函数

???*

???*?@param??array??例如:

???$config?=?array?(

???'arr'?=>?array(22,3,41,18)?,?//需要排序的数组值

???'sort'?=>?'insert',?//可能值:?insert,?select,?bubble,?quick

???'debug'?=>?TRUE?//可能值:?TRUE,?FALSE

???)

???*/

??public?function?construct($config?=?array())?{

????if?(?count($config)?>?0)?{

??????$this->_init($config);

????}

??}

??/**

???*?获取排序结果

???*/

??public?function?display()?{

????return?$this->arr;

??}

??/**

???*?初始化

???*

???*?@param??array

???*?@return?bool

???*/

??private?function?_init($config?=?array())?{

????//参数判断

????if?(?!is_array($config)?OR?count($config)?==?0)?{

??????if?($this->debug?===?TRUE)?{

????????$this->_log("sort_init_param_invaild");

??????}

??????return?FALSE;

????}

????//初始化成员变量

????foreach?($config?as?$key?=>?$val)?{

??????if?(?isset($this->$key))?{

????????$this->$key?=?$val;

??????}

????}

????//调用相应的成员方法完成排序

????$method?=?$this->sort?.?$this->marker;

????if?(?!?method_exists($this,?$method))?{

??????if?($this->debug?===?TRUE)?{

????????$this->_log("sort_method_invaild");

??????}

??????return?FALSE;

????}

????if?(?FALSE?===?($this->arr?=?$this->$method($this->arr)))

??????return?FALSE;

????return?TRUE;

??}

??/**

???*?插入排序

???*?

???*?@param??array

???*?@return?bool

???*/

??private?function?insert_sort($arr)?{

????//参数判断

????if?(?!?is_array($arr)?OR?count($arr)?==?0)?{

??????if?($this->debug?===?TRUE)?{

????????$this->_log("sort_array(insert)_invaild");

??????}

??????return?FALSE;

????}

????//具体实现

????$count?=?count($arr);

????for?($i?=?1;?$i?<?$count;?$i++)?{

??????$tmp?=?$arr[$i];

??????for($j?=?$i-1;?$j?>=?0;?$j--)?{?

????????if($arr[$j]?>?$tmp)?{

??????????$arr[$j+1]?=?$arr[$j];

??????????$arr[$j]?=?$tmp;

????????}

??????}

????}

????return?$arr;

??}

??/**

???*?选择排序

???*?

???*?@param??array

???*?@return?bool

???*/

??private?function?select_sort($arr)?{

????//参数判断

????if?(?!?is_array($arr)?OR?count($arr)?==?0)?{

??????if?($this->debug?===?TRUE)?{

????????$this->_log("sort_array(select)_invaild");

??????}

??????return?FALSE;

????}

????//具体实现

????$count?=?count($arr);

????for?($i?=?0;?$i?<?$count-1;?$i++)?{

??????$min?=?$i;

??????for?($j?=?$i+1;?$j?<?$count;?$j++)?{

????????if?($arr[$min]?>?$arr[$j])?$min?=?$j;

??????}

??????if?($min?!=?$i)?{

????????$tmp?=?$arr[$min];

????????$arr[$min]?=?$arr[$i];

????????$arr[$i]?=?$tmp;

??????}

????}

????return?$arr;

??}

??/**

???*?冒泡排序

???*?

???*?@param??array

???*?@return?bool

???*/

??private?function?bubble_sort($arr)?{

????//参数判断

????if?(?!?is_array($arr)?OR?count($arr)?==?0)?{

??????if?($this->debug?===?TRUE)?{

????????$this->_log("sort_array(bubble)_invaild");

??????}

??????return?FALSE;

????}

????//具体实现

????$count?=?count($arr);

????for?($i?=?0;?$i?<?$count;?$i++)?{

??????for?($j?=?$count-1;?$j?>?$i;?$j--)?{

????????if?($arr[$j]?<?$arr[$j-1])?{

??????????$tmp?=?$arr[$j];

??????????$arr[$j]?=?$arr[$j-1];

??????????$arr[$j-1]?=?$tmp;

????????}

??????}

????}

????return?$arr;??

??}

??/**

???*?快速排序

???*?@by?

???*?@param??array

???*?@return?bool

???*/

??private?function?quick_sort($arr)?{

????//具体实现

????if?(count($arr)?<=?1)?return?$arr;?

????$key?=?$arr[0];

????$left_arr?=?array();

????$right_arr?=?array();

????for?($i?=?1;?$i?<?count($arr);?$i++){

??????if?($arr[$i]?<=?$key)

????????$left_arr[]?=?$arr[$i];

??????else

????????$right_arr[]?=?$arr[$i];

????}

????$left_arr?=?$this->quick_sort($left_arr);

????$right_arr?=?$this->quick_sort($right_arr);?

??

????return?array_merge($left_arr,?array($key),?$right_arr);

??}

??/**

???*?日志记录

???*/

??private?function?_log($msg)?{

????$msg?=?'date['?.?date('Y-m-d?H:i:s')?.?']?'?.?$msg?.?'\n';

????return?@file_put_contents('sort_err.log',?$msg,?FILE_APPEND);

??}

}

/*End?of?file?sort.php*/

/*Location?htdocs/sort.php?*/

2.?sort_demo.php文件如下:

<?php

require_once('sort.php');

$config?=?array?(

??'arr'?=>?array(23,?22,?41,?18,?20,?12,?200303,2200,1192)?,

??//需要排序的数组值

??'sort'?=>?'select',

??//可能值:?insert,?select,?bubble,?quick

??'debug'?=>?TRUE

??//可能值:?TRUE,?FALSE

);

$sort?=?new?Sort($config);

//var_dump($config['arr']);

var_dump($sort->display());

/*End?of?php*/

如何使用强大的PHP函数对数组进行排序

如果你已经使用了一段时间PHP的话,那么,你应该已经对它的数组比较熟悉了——这种数据结构允许你在单个变量中存储多个值,并且可以把它们作为一个集合进行操作。

经常,开发人员发现在PHP中使用这种数据结构对值或者数组元素进行排序非常有用。PHP提供了一些适合多种数组的排序函数,这些函数允许你在数组内部对元素进行排列,也允许用很多不同的方法对它们进行重新排序。在这篇文章中我们将讨论该排序中最重要的几个函数。

简单排序

首先,让我们来看看最简单的情况:将一个数组元素从低到高进行简单排序,这个函数既可以按数字大小排列也可以按字母顺序排列。PHP的sort()函数实现了这个功能,如Listing A所示:

Listing A

<?php

? $data = array(5,8,1,7,2);

? sort($data);

? print_r($data);

? ?>

输出结果如下所示:

Array ([0] => 1

[1] => 2

[2] => 5

[3] => 7

[4] => 8

)

也能使用rsort()函数进行排序,它的结果与前面所使用的sort()简单排序结果相反。Rsort()函数对数组元素进行从高到低的倒排,同样可以按数字大小排列也可以按字母顺序排列。Listing B给我们展示了它的一个例子:

Listing B

<?php $data = array(5,8,1,7,2);rsort($data); print_r($data);

?>

它的输出结果如下:

Array ([0] => 8

[1] => 7

[2] => 5

[3] => 2

[4] => 1

)

根据关键字排序

当我们使用数组的时候,经常根据关键字对数组重新排序,从高到低。Ksort()函数就是根据关键字进行排序的函数,同时,它在排序的过程中会保持关键字的相关性。Listing C就是一个例子:

Listing C

<?php $data = array("US" => "United States", "IN" => "India", "DE" => "Germany", "ES" => "Spain");ksort($data); print_r($data);

?>

它的输出结果如下:

Array ([DE] => Germany

[ES] => Spain

[IN] => India

[US] => United States

)

Krsort()函数是根据关键字对数组进行倒排,Listing D就是这样的例子:

Listing D

<?php $data = array("US" => "United States", "IN" => "India", "DE" => "Germany", "ES" => "Spain");krsort($data); print_r($data);

?>

它的输出结果如下:

Array ([US] => United States

[IN] => India

[ES] => Spain

[DE] => Germany

)

根据值排序

如果你想使用值排序来取代关键字排序的话,PHP也能满足你的要求。你只要使用asort()函数来代替先前提到的ksort()函数就可以了。如Listing E所示:

Listing E

<?php $data = array("US" => "United States", "IN" => "India", "DE" => "Germany", "ES" => "Spain");asort($data); print_r($data);

?>

下面就是它的输出结果。请注意这个结果与上面使用ksort()函数所得到的结果的不同——在这两种情况中,都是按字母顺序进行排序的,但是它们是根据数组的不同字段进行排序的。

同时,请注意关键字-值之间的联系会始终保持;它只是关键字-值对排序后的一种方式,排序并不会改变它们的对应关系。

Array ([DE] => Germany

[IN] => India

[ES] => Spain

[US] => United States

)

现在,你肯定能猜到这种排序也可以进行倒排,它使用arsort()函数完成这个功能。Listing F就是一个例子:

Listing F

<?php $data = array("US" => "United States", "IN" => "India", "DE" => "Germany", "ES" => "Spain");arsort($data); print_r($data);

?>

下面是它的输出结果,根据值按字母表顺序进行倒排。将下面的结果与用krsort()函数进行倒排后生成的结果进行比较,就能很容易明白两者的不同了。

Array ([US] => United States

[ES] => Spain

[IN] => India

[DE] => Germany

)

自然语言排序

PHP有一个非常独特的排序方式,这种方式使用认知而不是使用计算规则。这种特性称为自然语言排序,当创建模糊逻辑应用软件的时候这种排序方式非常有用。下面大家可以来看看它的一个简单例子,如Listing G所示:

Listing G

<?php $data = array("book-1", "book-10", "book-100", "book-5"); sort($data);print_r($data);

natsort($data); print_r($data);?>

它的输出结果如下:

Array ([0] => book-1

[1] => book-10

[2] => book-100

[3] => book-5

)

Array

(

[0] => book-1

[3] => book-5

[1] => book-10

[2] => book-100

)

它们的不同已经很清楚了:第二个排序结果更直观,更“人性化”,然而第一个则更符合算法规则,更具“计算机”特点。

自然语言能进行倒排吗?答案是肯定的!只要对natsort()的结果使用array_reverse()函数就可以了,Listing H就是一个简单例子:

Listing H

<?php $data = array("book-1", "book-10", "book-100", "book-5");natsort($data); print_r(array_reverse($data));

?>

下面是它的输出结果:

Array ([0] => book-100

[1] => book-10

[2] => book-5

[3] => book-1

)

根据用户自定义的规则排序

PHP也能让你定义自己的排序算法,你可以通过创建你自己的比较函数,并把它传递给usort()函数。如果第一个参数比第二个参数“小”的话,比较函数必须返回一个比0小的数,如果第一参数比第二个参数“大”的话,比较函数应该返回一个比0大的数。

Listing I就是这样的一个例子,在这个例子中根据它们的长度对数组元素进行排序,最短的项放在最前面:

Listing I

<?php $data = array("joe@host测试数据", "john.doe@gh.co.uk", "asmithsonian@us.info", "jay@zoo.tw");usort($data, 'sortByLen');

print_r($data); function sortByLen($a, $b) {

if (strlen($a) == strlen($b)) {

return 0;

} else {

return (strlen($a) > strlen($b)) ? 1 : -1;

}

}

?>

这样,就创建了我们自己的比较函数,这个函数使用strlen()函数比较每一个字符串的个数,然后分别返回1,0或-1.这个返回值是决定元素排列的基础。下面是它的输出结果:

Array ([0] => jay@zoo.tw

[1] => joe@host测试数据

[2] => john.doe@gh.co.uk

[3] => asmithsonian@us.info

)

自然语言排序

PHP有一个非常独特的排序方式,这种方式使用认知而不是使用计算规则。这种特性称为自然语言排序,当创建模糊逻辑应用软件的时候这种排序方式非常有用。下面大家可以来看看它的一个简单例子,如Listing G所示:

Listing G

<?php $data = array("book-1", "book-10", "book-100", "book-5"); sort($data);print_r($data);

natsort($data); print_r($data);?>

它的输出结果如下:

Array ([0] => book-1

[1] => book-10

[2] => book-100

[3] => book-5

)

Array

(

[0] => book-1

[3] => book-5

[1] => book-10

[2] => book-100

)

它们的不同已经很清楚了:第二个排序结果更直观,更“人性化”,然而第一个则更符合算法规则,更具“计算机”特点。

自然语言能进行倒排吗?答案是肯定的!只要对natsort()的结果使用array_reverse()函数就可以了,Listing H就是一个简单例子:

Listing H

<?php $data = array("book-1", "book-10", "book-100", "book-5");natsort($data); print_r(array_reverse($data));

?>

下面是它的输出结果:

Array ([0] => book-100

[1] => book-10

[2] => book-5

[3] => book-1

)

根据用户自定义的规则排序

PHP也能让你定义自己的排序算法,你可以通过创建你自己的比较函数,并把它传递给usort()函数。如果第一个参数比第二个参数“小”的话,比较函数必须返回一个比0小的数,如果第一参数比第二个参数“大”的话,比较函数应该返回一个比0大的数。

Listing I就是这样的一个例子,在这个例子中根据它们的长度对数组元素进行排序,最短的项放在最前面:

Listing I

<?php $data = array("joe@host测试数据", "john.doe@gh.co.uk", "asmithsonian@us.info", "jay@zoo.tw");usort($data, 'sortByLen');

print_r($data); function sortByLen($a, $b) {

if (strlen($a) == strlen($b)) {

return 0;

} else {

return (strlen($a) > strlen($b)) ? 1 : -1;

}

}

?>

这样,就创建了我们自己的比较函数,这个函数使用strlen()函数比较每一个字符串的个数,然后分别返回1,0或-1.这个返回值是决定元素排列的基础。下面是它的输出结果:

Array ([0] => jay@zoo.tw

[1] => joe@host测试数据

[2] => john.doe@gh.co.uk

[3] => asmithsonian@us.info

)

多维排序

最后,PHP也允许在多维数组上执行一些比较复杂的排序——例如,首先对一个嵌套数组使用一个普通的关键字进行排序,然后再根据另一个关键字进行排序。这与使用SQL的ORDER BY语句对多个字段进行排序非常相似。为了能更好的明白它是如何工作的,请仔细看Listing J所举的例子:

Listing J

<?php $data = array(array("id" => 1, "name" => "Boney M", "rating" => 3),

array("id" => 2, "name" => "Take That", "rating" => 1),

array("id" => 3, "name" => "The Killers", "rating" => 4),

array("id" => 4, "name" => "Lusain", "rating" => 3),

); foreach ($data as $key => $value) {

$name[$key] = $value['name'];

$rating[$key] = $value['rating'];

}

array_multisort($rating, $name, $data); print_r($data);?>

这里,我们在$data数组中模拟了一个行和列数组。然后,我使用array_multisort()函数对数据集合进行重排,首先是根据rating进行排序,然后,如果rating相等的话,再根据name排序。它的输出结果如下:

Array ([0] => Array

(

[id] => 2

[name] => Take That

[rating] => 1

) [1] => Array

(

[id] => 1

[name] => Boney M

[rating] => 3

)

[2] => Array

(

[id] => 4

[name] => Lusain

[rating] => 3

)

[3] => Array

(

[id] => 3

[name] => The Killers

[rating] => 4

)

)

array_multisort()函数是PHP中最有用的函数之一,它有非常广泛的应用范围。另外,就如你在例子中所看到的,它能对多个不相关的数组进行排序,也可以使用其中的一个元素作为下次排序的基础,还可以对数据库结果集进行排序。

这些例子应该让你对PHP中各种数组排序函数的使用有了初步的了解,也向你展示了一些隐藏在PHP数组处理工具包的内部功能。

最后,祝你能愉快的使用这些功能!

关于php元素排序算法的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php元素排序算法 php元素排序算法怎么用的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did208079
更新时间:2023-05-03   阅读:20次

上一篇: js获取php变量数组 php获取变量类型和值

下一篇:包含php5.5msi的词条

最新资料更新

  • 1.php查询数组找到 php查找数组元素
  • 2.php怎么使用css php怎么使用数据库锁
  • 3.JavaPHP你好 java welcome
  • 4.修改php网页链接 怎么修改php网页
  • 5.php变量内存溢出 php 内存限制
  • 6.phptoast弹框 php 弹框
  • 7.php图片打不开 php打不开文件
  • 8.phppngjpeg的简单介绍
  • 9.php登录和注册 php登录和注册不使用数据库
  • 10.PHP画饼图动态 python 动态饼图
  • 11.php条形码生成 条形码生成器工具
  • 12.php登陆检测 php登录原理
  • 13.php生成vcard php生成验证码
  • 14.php浏览页面乱码 php页面字符出现乱码怎么解决
  • 15.php河内塔问题 河内塔算法
  • 16.php内存监控视频 视频监控内存计算
  • 17.php存储的知识 php会话保存数据的两种方式是
  • 18.phphtml补全 html自动补全代码
  • 19.phphint插件下载 php 插件系统
  • 20.mes开源框架PHP mes开源框架 python

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]