php排序的实现,php根据字段排序

本文目录一览:

PHP实现的自定义数组排序函数与排序类示例

本文实例讲述了PHP实现的自定义数组排序函数与排序类。分享给大家供大家参考,具体如下:

/*

*

二维数组自定义排序函数

*

uasort($arr,function_name)

*

**/

$arr

=

array(

array(‘a’=1,’b’=’c’),

array(‘a’=4,’b’=’a’),

array(‘a’=5,’b’=’g’),

array(‘a’=7,’b’=’f’),

array(‘a’=6,’b’=’e’)

);

function

compare_arr($x,$y){

if($x[‘b’]$y[‘b’]){

return

-1;

}else

if($x[‘b’]$y[‘b’]){

return

1;

}else{

return

0;

}

}

uasort($arr,’compare_arr’);

foreach($arr

as

$a){

echo

$a[‘a’].’=’.$a[‘b’].’br/’;

}

手册里的自定义排序类:

class

multiSort

{

var

$key;

//key

in

your

array

//排序函数

参数依次是

数组

待排列索引

排序类型

function

run

($myarray,

$key_to_sort,

$type_of_sort

=

”)

{

$this-key

=

$key_to_sort;

if

($type_of_sort

==

‘desc’)

uasort($myarray,

array($this,

‘myreverse_compare’));

else

uasort($myarray,

array($this,

‘mycompare’));

return

$myarray;

}

//正序

function

mycompare($x,

$y)

{

if

(

$x[$this-key]

==

$y[$this-key]

)

return

0;

else

if

(

$x[$this-key]

$y[$this-key]

)

return

-1;

else

return

1;

}

//逆序

function

myreverse_compare($x,

$y)

{

if

(

$x[$this-key]

==

$y[$this-key]

)

return

0;

else

if

(

$x[$this-key]

$y[$this-key]

)

return

-1;

else

return

1;

}

}

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《php字符串(string)用法总结》、《PHP针对XML文件操作技巧总结》、《PHP错误与异常处理方法总结》、《PHP运算与运算符用法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

php如何排序置顶

 第一步,在文章表里面建两个字段,用于做置顶功能。一个是top字段,timestamp类型,默认选“定义”,用于存储置顶操作的时间;还有一个flag字段,int类型,用于判断是否置顶,置顶为1,否则为0。。

第二步,模板页面修改。列表选项里面加置顶列,下面对应的行写如下代码:

td class=”center” {{if $logs[data].flag}} a href=”JavaScript:void(0);” onclick=”istop(‘{{$logs[data].id}}’,0)”取消置顶/a{{else}} a href=”javascript:void(0);” onclick=”istop(‘{{$logs[data].id}}’,1)”置顶/a{{/if}}/td

就是用flag判断是否置顶了。

页面对应的置顶js:

function istop(id,flag){

$.ajax({

type: “POST”,

url: “?m={{‘article’|encrypt}}a=savePost”,data: “id=”+id+”flag=”+flag,

dataType:”json”,

success: function(msg){

if(msg.status == “true”)

{

window.location= ‘?m={{‘article’|encrypt}}’;}

else

{

alert(msg.message);

}

}

});

}

第三步,程序里只要稍作修改即可。先按是否置顶排序,再按置顶时间排序,再按默认的排序。

$sql .=” ORDER BY flag DESC,top DESC,id DESC “;(还记得我们添加的字段吗?)

这样就完成了文章置顶的功能。

PHP实现常见的排序算法

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

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

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

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

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

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

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

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

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

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

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

插入排序步骤大致如下:

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

步骤:

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

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

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

php几种排序算法实例详解

下面给你介绍四种排序方法:

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

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

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

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

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

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

4) 快排也是一个高效的排序算法,它的时间复杂度也是O(nlogn)。原理是:选择一个基准元素,然后把数组中小于这个元素的元素放在基准元素左边,大于它的,放在基准元素右边。然后对这两边继续同样的操作。代码如下:

php实现数组按指定KEY排序的方法

本文实例讲述了php实现数组按指定KEY排序的方法。分享给大家供大家参考。具体实现方法如下:

function

array_sort($arr,$keys,$orderby=’asc’){

$keysvalue

=

$new_array

=

array();

foreach

($arr

as

$k=$v){

$keysvalue[$k]

=

$v[$keys];

}

if($orderby==

‘asc’){

asort($keysvalue);

}else{

arsort($keysvalue);

}

reset($keysvalue);

foreach

($keysvalue

as

$k=$v){

$new_array[]

=

$arr[$k];

}

return

$new_array;

}

希望本文所述对大家的php程序设计有所帮助。

thinkphp如何实现快速排序

thinkphp使用的数据库是mysql,mysql多个字段排序的语句:

select

* from `表名` where 条件 order by 字段1 desc,字段2

asc,…

thinkphp中排序方法为

$User-where(‘score0’)-order(‘score desc’)….;

但是例子中只能单字段排序,不过可以理解成字符串,那就可以这样写试试

$User-where(‘score0’)-order(‘score desc,id asc,…’)….;

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

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

相关推荐

  • PHP和Python哪个好找工作?

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

    编程 2025-04-29
  • Python根据表格数据生成折线图

    本文将介绍如何使用Python根据表格数据生成折线图。折线图是一种常见的数据可视化图表形式,可以用来展示数据的趋势和变化。Python是一种流行的编程语言,其强大的数据分析和可视化…

    编程 2025-04-29
  • PHP怎么接币

    想要在自己的网站或应用中接受比特币等加密货币的支付,就需要对该加密货币拥有一定的了解,并使用对应的API进行开发。本文将从多个方面详细阐述如何使用PHP接受加密货币的支付。 一、环…

    编程 2025-04-29
  • 使用PHP foreach遍历有相同属性的值

    本篇文章将介绍如何使用PHP foreach遍历具有相同属性的值,并给出相应的代码示例。 一、基础概念 在讲解如何使用PHP foreach遍历有相同属性的值之前,我们需要先了解几…

    编程 2025-04-28
  • Navicat导出字段识别为文本而不是数值

    解决方法:使用特定的代码将导出的字段识别为文本,而不是数值,下面将从多个方面进行详细阐述。 一、ASCII码转换 在导出的文件中,将数值字段使用ASCII码转换,即可让这些字段被识…

    编程 2025-04-28
  • mysessioncontext 根据jessionid获取session为空解决方法

    当我们在使用web应用程序开发时,mysessioncontext 根据jessionid获取session为空是一个常见的错误。为了避免这个错误的发生,我们必须了解什么是sess…

    编程 2025-04-28
  • 如何使用Java List根据某一字段升序排序

    本文将详细介绍在Java中如何使用List集合按照某一字段进行升序排序。具体实现思路如下: 一、定义需要进行排序的Java对象 首先,我们需要定义一个Java对象,该对象包含多个字…

    编程 2025-04-27
  • PHP获取301跳转后的地址

    本文将为大家介绍如何使用PHP获取301跳转后的地址。301重定向是什么呢?当我们访问一个网页A,但是它已经被迁移到了另一个地址B,此时若服务器端做了301重定向,那么你的浏览器在…

    编程 2025-04-27
  • PHP登录页面代码实现

    本文将从多个方面详细阐述如何使用PHP编写一个简单的登录页面。 1. PHP登录页面基本架构 在PHP登录页面中,需要包含HTML表单,用户在表单中输入账号密码等信息,提交表单后服…

    编程 2025-04-27
  • 如何使用MySQL字段去重

    本文将从多个方面为您详细介绍如何使用MySQL字段去重并给出相应的代码示例。 一、SELECT DISTINCT语句去重 MySQL提供了SELECT DISTINCT语句,通过在…

    编程 2025-04-27

发表回复

登录后才能评论